mirror of https://github.com/apache/lucene.git
Standalone distribution assembly and 'run' task for Luke (#1742)
Co-authored-by: Tomoko Uchida <tomoko.uchida.1111@gmail.com>
This commit is contained in:
parent
a5543dfb51
commit
3579056249
|
@ -14,14 +14,28 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import org.apache.tools.ant.taskdefs.condition.Os
|
||||
import org.apache.tools.ant.filters.*
|
||||
import java.nio.file.Files
|
||||
|
||||
apply plugin: 'java-library'
|
||||
|
||||
description = 'Luke - Lucene Toolbox'
|
||||
|
||||
ext {
|
||||
standaloneDistDir = file("$buildDir/${archivesBaseName}-${project.version}")
|
||||
}
|
||||
|
||||
configurations {
|
||||
standalone
|
||||
implementation.extendsFrom standalone
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api project(':lucene:core')
|
||||
|
||||
implementation 'org.apache.logging.log4j:log4j-core'
|
||||
|
||||
implementation project(':lucene:codecs')
|
||||
implementation project(':lucene:backward-codecs')
|
||||
implementation project(':lucene:analysis:common')
|
||||
|
@ -29,7 +43,123 @@ dependencies {
|
|||
implementation project(':lucene:queryparser')
|
||||
implementation project(':lucene:misc')
|
||||
|
||||
implementation 'org.apache.logging.log4j:log4j-core'
|
||||
standalone project(":lucene:highlighter")
|
||||
standalone project(':lucene:analysis:icu')
|
||||
standalone project(':lucene:analysis:kuromoji')
|
||||
standalone project(':lucene:analysis:morfologik')
|
||||
standalone project(':lucene:analysis:nori')
|
||||
standalone project(':lucene:analysis:opennlp')
|
||||
standalone project(':lucene:analysis:phonetic')
|
||||
standalone project(':lucene:analysis:smartcn')
|
||||
standalone project(':lucene:analysis:stempel')
|
||||
standalone project(':lucene:suggest')
|
||||
|
||||
testImplementation project(':lucene:test-framework')
|
||||
}
|
||||
|
||||
// Configure main class name for all JARs.
|
||||
tasks.withType(Jar) {
|
||||
manifest {
|
||||
attributes("Main-Class": "org.apache.lucene.luke.app.desktop.LukeMain")
|
||||
}
|
||||
}
|
||||
|
||||
// Configure the default JAR without any class path information
|
||||
// (this may actually be wrong - perhaps we should add the
|
||||
// "distribution" paths here.
|
||||
jar {
|
||||
manifest {
|
||||
}
|
||||
}
|
||||
|
||||
// Configure "stand-alone" JAR with proper dependency classpath links.
|
||||
task standaloneJar(type: Jar) {
|
||||
dependsOn classes
|
||||
|
||||
archiveFileName = "${archivesBaseName}-${project.version}-standalone.jar"
|
||||
|
||||
from(sourceSets.main.output)
|
||||
|
||||
// manifest attributes are resolved eagerly and we can't access runtimeClasspath
|
||||
// at configuration time so push it until execution.
|
||||
doFirst {
|
||||
manifest {
|
||||
attributes("Class-Path": configurations.runtimeClasspath.collect {
|
||||
"${it.getName()}"
|
||||
}.join(' '))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task standaloneAssemble(type: Sync) {
|
||||
def antHelper = new org.apache.tools.ant.Project()
|
||||
afterEvaluate {
|
||||
def substituteProperties = [
|
||||
"required.java.version": project.java.targetCompatibility,
|
||||
"luke.cmd": "${standaloneJar.archiveFileName.get()}"
|
||||
]
|
||||
substituteProperties.each { k, v -> antHelper.setProperty(k.toString(), v.toString()) }
|
||||
}
|
||||
|
||||
from standaloneJar
|
||||
from configurations.runtimeClasspath
|
||||
|
||||
from(file("src/distribution"), {
|
||||
filesMatching("README.txt", {
|
||||
filteringCharset = 'UTF-8'
|
||||
filter(ExpandProperties, project: antHelper)
|
||||
})
|
||||
})
|
||||
|
||||
into standaloneDistDir
|
||||
|
||||
doLast {
|
||||
logger.lifecycle("Standalone Luke distribution assembled. You can run it with:\n"
|
||||
+ "java -jar " + file("${standaloneDistDir}/${standaloneJar.archiveFileName.get()}"))
|
||||
}
|
||||
}
|
||||
|
||||
// Attach standalone distribution assembly to main assembly.
|
||||
assemble.dependsOn standaloneAssemble
|
||||
|
||||
// Create a standalone package bundle.
|
||||
task standalonePackage(type: Tar) {
|
||||
from standaloneAssemble
|
||||
|
||||
into "${archivesBaseName}-${project.version}/"
|
||||
|
||||
compression = Compression.GZIP
|
||||
archiveFileName = "${archivesBaseName}-${project.version}-standalone.tgz"
|
||||
}
|
||||
|
||||
// Create a set of artifacts for standalone distribution in a specific
|
||||
// exported configuration so that it can be pulled in by other projects.
|
||||
artifacts {
|
||||
standalone standaloneDistDir, {
|
||||
builtBy standaloneAssemble
|
||||
}
|
||||
}
|
||||
|
||||
// Utility to launch Luke (and fork it from the build).
|
||||
task run() {
|
||||
dependsOn standaloneAssemble
|
||||
description "Launches (spawns) Luke directly from the build process."
|
||||
group "Utility launchers"
|
||||
|
||||
doFirst {
|
||||
logger.lifecycle("Launching Luke ${project.version} right now...")
|
||||
def javaExecutable = {
|
||||
def registry = project.extensions.getByType(JavaInstallationRegistry)
|
||||
def currentJvm = registry.installationForCurrentVirtualMachine.get()
|
||||
currentJvm.getJavaExecutable().asFile
|
||||
}()
|
||||
ant.exec(
|
||||
executable: javaExecutable,
|
||||
spawn: true,
|
||||
vmlauncher: true
|
||||
) {
|
||||
arg(value: '-jar')
|
||||
arg(value: file("${standaloneDistDir}/${standaloneJar.archiveFileName.get()}").absolutePath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
This is Luke, Apache Lucene low-level index inspection and repair utility.
|
||||
|
||||
Luke requires Java ${required.java.version}. You can start it with:
|
||||
java -jar ${luke.cmd}
|
||||
|
||||
Happy index hacking!
|
Loading…
Reference in New Issue