mirror of https://github.com/apache/lucene.git
LUCENE-9435: revert Solr's packaging stuff for now.
This commit is contained in:
parent
a8ea6e70eb
commit
4a2a2da462
|
@ -176,3 +176,5 @@ apply from: file('gradle/documentation/render-javadoc.gradle')
|
|||
apply from: file('gradle/hacks/findbugs.gradle')
|
||||
apply from: file('gradle/hacks/gradle.gradle')
|
||||
apply from: file('gradle/hacks/hashmapAssertions.gradle')
|
||||
|
||||
apply from: file('gradle/solr/packaging.gradle')
|
|
@ -0,0 +1,200 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
|
||||
// For Solr, a 'resolve' task is much more complex. There are three folders:
|
||||
// lib/
|
||||
// test-lib/
|
||||
// lucene-libs/
|
||||
//
|
||||
// There doesn't seem to be one ideal set of rules on how these should be created, but
|
||||
// I tried to imitate the current (master) logic present in ivy and ant files in this way:
|
||||
//
|
||||
// The "solr platform" set of dependencies is a union of all deps for (core, solrj, server).
|
||||
//
|
||||
// Then:
|
||||
// lib - these are module's "own" dependencies, excluding Lucene's that are not present in the
|
||||
// solr platform.
|
||||
// lucene-libs - these are lucene modules declared as module's dependencies and not
|
||||
// present in solr platform.
|
||||
// test-lib/ - libs not present in solr platform and not included in solr:test-framework.
|
||||
//
|
||||
// None of these are really needed with gradle... they should be collected just in the distribution
|
||||
// package, not at each project's level.
|
||||
//
|
||||
// Unfortunately this "resolution" process is also related to how the final Solr packaging is assembled.
|
||||
// I don't know how to untie these two cleanly.
|
||||
//
|
||||
|
||||
configure(allprojects.findAll {project -> project.path.startsWith(":solr:contrib") }) {
|
||||
plugins.withType(JavaPlugin) {
|
||||
ext {
|
||||
packagingDir = file("${buildDir}/packaging")
|
||||
deps = file("${packagingDir}/${project.name}")
|
||||
}
|
||||
|
||||
configurations {
|
||||
solrPlatformLibs
|
||||
solrTestPlatformLibs
|
||||
runtimeLibs {
|
||||
extendsFrom runtimeElements
|
||||
}
|
||||
packaging
|
||||
}
|
||||
|
||||
dependencies {
|
||||
solrPlatformLibs project(":solr:core")
|
||||
solrPlatformLibs project(":solr:solrj")
|
||||
solrPlatformLibs project(":solr:server")
|
||||
|
||||
solrTestPlatformLibs project(":solr:test-framework")
|
||||
}
|
||||
|
||||
// An aggregate that configures lib, lucene-libs and test-lib in a temporary location.
|
||||
task assemblePackaging(type: Sync) {
|
||||
from "README.txt"
|
||||
|
||||
from ({
|
||||
def externalLibs = configurations.runtimeLibs.copyRecursive { dep ->
|
||||
if (dep instanceof org.gradle.api.artifacts.ProjectDependency) {
|
||||
return !dep.dependencyProject.path.startsWith(":solr")
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return externalLibs - configurations.solrPlatformLibs
|
||||
}, {
|
||||
exclude "lucene-*"
|
||||
into "lib"
|
||||
})
|
||||
|
||||
from ({
|
||||
def projectLibs = configurations.runtimeLibs.copyRecursive { dep ->
|
||||
(dep instanceof org.gradle.api.artifacts.ProjectDependency)
|
||||
}
|
||||
return projectLibs - configurations.solrPlatformLibs
|
||||
}, {
|
||||
include "lucene-*"
|
||||
into "lucene-libs"
|
||||
})
|
||||
|
||||
into deps
|
||||
}
|
||||
|
||||
task syncLib(type: Sync) {
|
||||
dependsOn assemblePackaging
|
||||
|
||||
from(file("${deps}/lib"), {
|
||||
include "**"
|
||||
})
|
||||
into file("${projectDir}/lib")
|
||||
}
|
||||
|
||||
task syncTestLib(type: Sync) {
|
||||
// From test runtime classpath exclude:
|
||||
// 1) project dependencies (and their dependencies)
|
||||
// 2) runtime dependencies
|
||||
// What remains is this module's "own" test dependency.
|
||||
from({
|
||||
def testRuntimeLibs = configurations.testRuntimeClasspath.copyRecursive { dep ->
|
||||
!(dep instanceof org.gradle.api.artifacts.ProjectDependency)
|
||||
}
|
||||
|
||||
return testRuntimeLibs - configurations.runtimeLibs - configurations.solrTestPlatformLibs
|
||||
})
|
||||
|
||||
into file("${projectDir}/test-lib")
|
||||
}
|
||||
|
||||
task resolve() {
|
||||
dependsOn syncLib, syncTestLib
|
||||
}
|
||||
|
||||
// Contrib packaging currently depends on internal resolve.
|
||||
artifacts {
|
||||
packaging packagingDir, {
|
||||
builtBy assemblePackaging
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
configure(project(":solr:example")) {
|
||||
evaluationDependsOn(":solr:example") // explicitly wait for other configs to be applied
|
||||
|
||||
task resolve(type: Copy) {
|
||||
from(configurations.postJar, {
|
||||
into "exampledocs/"
|
||||
})
|
||||
|
||||
into projectDir
|
||||
}
|
||||
}
|
||||
|
||||
configure(project(":solr:server")) {
|
||||
evaluationDependsOn(":solr:server")
|
||||
|
||||
task resolve(type: Copy) {
|
||||
dependsOn assemblePackaging
|
||||
|
||||
from({ packagingDir }, {
|
||||
include "**/*.jar"
|
||||
include "solr-webapp/webapp/**"
|
||||
includeEmptyDirs false
|
||||
})
|
||||
|
||||
into projectDir
|
||||
}
|
||||
}
|
||||
|
||||
configure(project(":solr:core")) {
|
||||
evaluationDependsOn(":solr:core")
|
||||
|
||||
configurations {
|
||||
runtimeLibs {
|
||||
extendsFrom runtimeElements
|
||||
}
|
||||
}
|
||||
|
||||
task resolve(type: Sync) {
|
||||
from({
|
||||
def ownDeps = configurations.runtimeLibs.copyRecursive { dep ->
|
||||
if (dep instanceof org.gradle.api.artifacts.ProjectDependency) {
|
||||
return !dep.dependencyProject.path.startsWith(":solr")
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return ownDeps
|
||||
}, {
|
||||
exclude "lucene-*"
|
||||
})
|
||||
|
||||
into "lib"
|
||||
}
|
||||
}
|
||||
|
||||
configure(project(":solr:solrj")) {
|
||||
evaluationDependsOn(":solr:solrj")
|
||||
|
||||
task resolve(type: Sync) {
|
||||
from({ configurations.runtimeClasspath }, {
|
||||
})
|
||||
|
||||
into "lib"
|
||||
}
|
||||
}
|
|
@ -37,3 +37,11 @@ dependencies {
|
|||
|
||||
testImplementation project(':solr:test-framework')
|
||||
}
|
||||
|
||||
// Add two folders to default packaging.
|
||||
assemblePackaging {
|
||||
from(projectDir, {
|
||||
include "bin/**"
|
||||
include "conf/**"
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue