| /* |
| * 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. |
| */ |
| import org.apache.tools.ant.filters.* |
| |
| apply plugin: 'java-library' |
| |
| description = 'Luke - Lucene Toolbox' |
| |
| ext { |
| standaloneDistDir = file("$buildDir/${archivesBaseName}-${project.version}") |
| } |
| |
| 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') |
| implementation project(':lucene:queries') |
| implementation project(':lucene:queryparser') |
| implementation project(':lucene:misc') |
| |
| implementation project(":lucene:highlighter") |
| implementation project(':lucene:analysis:icu') |
| implementation project(':lucene:analysis:kuromoji') |
| implementation project(':lucene:analysis:morfologik') |
| implementation project(':lucene:analysis:nori') |
| implementation project(':lucene:analysis:opennlp') |
| implementation project(':lucene:analysis:phonetic') |
| implementation project(':lucene:analysis:smartcn') |
| implementation project(':lucene:analysis:stempel') |
| implementation 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.md", { |
| 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" |
| } |
| |
| // 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) |
| } |
| } |
| } |