You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2020/08/12 14:29:00 UTC
[lucene-solr] branch master updated: Standalone distribution
assembly and 'run' task for Luke (#1742)
This is an automated email from the ASF dual-hosted git repository.
dweiss pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/master by this push:
new 3579056 Standalone distribution assembly and 'run' task for Luke (#1742)
3579056 is described below
commit 35790562495f95266d57ccdb6fcc298e914eae47
Author: Dawid Weiss <dw...@apache.org>
AuthorDate: Wed Aug 12 16:28:48 2020 +0200
Standalone distribution assembly and 'run' task for Luke (#1742)
Co-authored-by: Tomoko Uchida <to...@gmail.com>
---
lucene/luke/build.gradle | 132 +++++++++++++++++++++++++++++++-
lucene/luke/src/distribution/README.txt | 6 ++
2 files changed, 137 insertions(+), 1 deletion(-)
diff --git a/lucene/luke/build.gradle b/lucene/luke/build.gradle
index 6e32b1b..f6df53c 100644
--- a/lucene/luke/build.gradle
+++ b/lucene/luke/build.gradle
@@ -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)
+ }
+ }
+}
diff --git a/lucene/luke/src/distribution/README.txt b/lucene/luke/src/distribution/README.txt
new file mode 100644
index 0000000..0efea2d
--- /dev/null
+++ b/lucene/luke/src/distribution/README.txt
@@ -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!
\ No newline at end of file