From 7e89f0c0dc15bc36d91d9b6286e6c2cbde656e27 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Tue, 5 Mar 2024 15:30:42 +0100 Subject: [PATCH 01/22] additional publishing info --- gradle/platform/build.gradle.kts | 91 +++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index 9605d8c..43dd9b5 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -27,7 +27,7 @@ dependencies { val a = node / "artifactId" val v = node / "version" api("$g:$a:$v") -// println("$g:$a:$v") + // println("$g:$a:$v") } } } @@ -45,6 +45,95 @@ publishing { version = (effXml / "version").toString() from(components["javaPlatform"]) + pom { + name = "SciJava Parent POM" + description = "This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins." + url = "https://scijava.org/" + inceptionYear = "2011" + organization { + name = "SciJava" + url = "https://scijava.org/" + } + licenses { + license { + name = "Unlicense" + url = "https://unlicense.org/" + distribution = "repo" + } + } + developers { + developer { + id = "ctrueden" + name = "Curtis Rueden" + url = "https://imagej.net/people/ctrueden" + roles.addAll("founder", "lead", "developer", "debugger", "reviewer", "support", "maintainer") + } + } + contributors { + operator fun String.invoke(id: String) = contributor { + name = this@invoke + url = "https://imagej.net/people/$id" + properties = mapOf("id" to id) + } + "Mark Hiner"("hinerm") + "Johannes Schindelin"("dscho") + "Sébastien Besson"("sbesson") + "John Bogovic"("bogovicj") + "Nicolas Chiaruttini"("NicoKiaru") + "Barry DeZonia"("bdezonia") + "Richard Domander"("rimadoma") + "Karl Duderstadt"("karlduderstadt") + "Jan Eglinger"("imagejan") + "Gabriel Einsdorf"("gab1one") + "Tiago Ferreira"("tferr") + contributor { + name = "David Gault" + properties = mapOf("id" to "dgault") + } + "Ulrik Günther"("skalarproduktraum") + "Philipp Hanslovsky"("hanslovsky") + "Stefan Helfrich"("stelfrich") + "Cameron Lloyd"("camlloyd") + "Hadrien Mary"("hadim") + "Tobias Pietzsch"("tpietzsch") + "Stephan Preibisch"("StephanPreibisch") + "Stephan Saalfeld"("axtimwalde") + "Deborah Schmidt"("frauzufall") + "Lorenzo Scianatico"("LoreScianatico") + "Jean - Yves Tinevez"("tinevez") + "Christian Tischer"("tischi") + "Gabriella Turek"("turekg") + contributor { + name = "Giuseppe Barbieri" + properties = mapOf("id" to "elect") + } + } + + mailingLists { + mailingList { + name = "SciJava" + subscribe = "https://groups.google.com/group/scijava" + unsubscribe = subscribe + post = "scijava@googlegroups.com" + archive = "https://groups.google.com/group/scijava" + } + } + + scm { + connection = "scm:git:https://github.com/scijava/pom-scijava" + developerConnection = "scm:git:git@github.com:scijava/pom-scijava" + tag = "HEAD" + url = "https://github.com/scijava/pom-scijava" + } + issueManagement { + system = "GitHub Issues" + url = "https://github.com/scijava/pom-scijava/issues" + } + ciManagement { + system = "GitHub Actions" + url = "https: //github.com/scijava/pom-scijava/actions" + } + } } } } From 9179b6fd65e1df184ed3119c8db4e390e2936a61 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Tue, 5 Mar 2024 15:32:48 +0100 Subject: [PATCH 02/22] remove spaces --- gradle/platform/build.gradle.kts | 3 --- 1 file changed, 3 deletions(-) diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index 43dd9b5..f29fa93 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -43,7 +43,6 @@ publishing { groupId = "org.scijava" artifactId = "pom-scijava" version = (effXml / "version").toString() - from(components["javaPlatform"]) pom { name = "SciJava Parent POM" @@ -108,7 +107,6 @@ publishing { properties = mapOf("id" to "elect") } } - mailingLists { mailingList { name = "SciJava" @@ -118,7 +116,6 @@ publishing { archive = "https://groups.google.com/group/scijava" } } - scm { connection = "scm:git:https://github.com/scijava/pom-scijava" developerConnection = "scm:git:git@github.com:scijava/pom-scijava" From 56d08f25dd546098ba321eb7387ab711a55a6df3 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Tue, 12 Mar 2024 09:18:55 +0100 Subject: [PATCH 03/22] up --- gradle/catalog/build.gradle.kts | 67 + gradle/catalog/eff.xml | 6379 +++++++++++++++++ gradle/catalog/settings.gradle.kts | 12 + gradle/platform/build.gradle.kts | 150 +- gradle/platform/buildSrc/build.gradle.kts | 13 + gradle/platform/buildSrc/settings.gradle.kts | 4 + .../src/main/kotlin/publish.gradle.kts | 235 + gradle/platform/settings.gradle.kts | 25 + gradle/playground/build.gradle.kts | 228 + gradle/playground/settings.gradle.kts | 25 + gradle/settings.gradle.kts | 16 +- 11 files changed, 7037 insertions(+), 117 deletions(-) create mode 100644 gradle/catalog/build.gradle.kts create mode 100644 gradle/catalog/eff.xml create mode 100644 gradle/catalog/settings.gradle.kts create mode 100644 gradle/platform/buildSrc/build.gradle.kts create mode 100644 gradle/platform/buildSrc/settings.gradle.kts create mode 100644 gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts create mode 100644 gradle/platform/settings.gradle.kts create mode 100644 gradle/playground/build.gradle.kts create mode 100644 gradle/playground/settings.gradle.kts diff --git a/gradle/catalog/build.gradle.kts b/gradle/catalog/build.gradle.kts new file mode 100644 index 0000000..7cf6db1 --- /dev/null +++ b/gradle/catalog/build.gradle.kts @@ -0,0 +1,67 @@ +import groovy.xml.XmlSlurper +import groovy.xml.slurpersupport.GPathResult +import groovy.xml.slurpersupport.NodeChild + +plugins { + `version-catalog` + `maven-publish` +} + +group = "org.scijava" +version = "0.1" + +catalog.versionCatalog { + + operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult + + val effXml = XmlSlurper().parse(projectDir.resolve("eff.xml")) + val deps = effXml / "dependencyManagement" / "dependencies" + val bundles = mutableMapOf>() + val skip = listOf("mpicbg" to "mpicbg_") + val cache = mutableSetOf() // skip duplicates, such as org.bytedeco:ffmpeg + for (dep in deps.children()) { + val node = dep as NodeChild + val g = node / "groupId" + val a = node / "artifactId" + val v = node / "version" + val gav = "$g:$a:$v" + + if (("$g" to "$a") in skip || gav in cache) + continue + + cache += gav + + // println(gav) + val camel = "$a".split('-', '_') + .joinToString("") { if (it.isEmpty()) "" else it[0].uppercase() + it.substring(1).lowercase() } + .replaceFirstChar { it.lowercase() } + + fun getAlias(group: String = "$g".substringAfterLast('.')) = + "$group." + when { + camel.startsWith(group) -> camel.substringAfter(group).replaceFirstChar { it.lowercase() }.ifEmpty { group } + else -> camel + }.also { bundles.getOrPut(group, ::ArrayList) += it } + + val alias = when ("$g") { + in listOf("org.scijava", "net.imagej", "net.imglib2", "sc.fiji", "org.janelia.saalfeldlab") -> getAlias() + "io.scif" -> getAlias("scifio") + else -> "$g.$camel" + } + + println("$alias($gav)") + library(alias, gav) + } + for ((alias, aliases) in bundles) + bundle(alias, aliases) +} + +publishing.publications { + repositories.maven { + name = "sciJava" + credentials(PasswordCredentials::class) + url = uri("https://maven.scijava.org/content/repositories/releases") + } + create("sciJavaCatalog") { + from(components["versionCatalog"]) + } +} \ No newline at end of file diff --git a/gradle/catalog/eff.xml b/gradle/catalog/eff.xml new file mode 100644 index 0000000..1bb3642 --- /dev/null +++ b/gradle/catalog/eff.xml @@ -0,0 +1,6379 @@ + + + + + + + + + + + + + + + 4.0.0 + + org.scijava + pom-scijava-base + 19.0.0 + + + org.scijava + pom-scijava + 38.0.0-SNAPSHOT + pom + SciJava Parent POM + This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. + https://scijava.org/ + 2011 + + SciJava + https://scijava.org/ + + + + Unlicense + https://unlicense.org/ + repo + + + + + ctrueden + Curtis Rueden + https://imagej.net/people/ctrueden + + founder + lead + developer + debugger + reviewer + support + maintainer + + + + + + Mark Hiner + https://imagej.net/people/hinerm + + hinerm + + + + Johannes Schindelin + https://imagej.net/people/dscho + + dscho + + + + Sébastien Besson + https://imagej.net/people/sbesson + + sbesson + + + + John Bogovic + https://imagej.net/people/bogovicj + + bogovicj + + + + Nicolas Chiaruttini + https://imagej.net/people/NicoKiaru + + NicoKiaru + + + + Barry DeZonia + https://imagej.net/people/bdezonia + + bdezonia + + + + Richard Domander + https://imagej.net/people/rimadoma + + rimadoma + + + + Karl Duderstadt + https://imagej.net/people/karlduderstadt + + karlduderstadt + + + + Jan Eglinger + https://imagej.net/people/imagejan + + imagejan + + + + Gabriel Einsdorf + https://imagej.net/people/gab1one + + gab1one + + + + Tiago Ferreira + https://imagej.net/people/tferr + + tferr + + + + David Gault + + dgault + + + + Ulrik Günther + https://imagej.net/people/skalarproduktraum + + skalarproduktraum + + + + Philipp Hanslovsky + https://imagej.net/people/hanslovsky + + hanslovsky + + + + Stefan Helfrich + https://imagej.net/people/stelfrich + + stelfrich + + + + Cameron Lloyd + https://imagej.net/people/camlloyd + + camlloyd + + + + Hadrien Mary + https://imagej.net/people/hadim + + hadim + + + + Tobias Pietzsch + https://imagej.net/people/tpietzsch + + tpietzsch + + + + Stephan Preibisch + https://imagej.net/people/StephanPreibisch + + StephanPreibisch + + + + Stephan Saalfeld + https://imagej.net/people/axtimwalde + + axtimwalde + + + + Deborah Schmidt + https://imagej.net/people/frauzufall + + frauzufall + + + + Lorenzo Scianatico + https://imagej.net/people/LoreScianatico + + LoreScianatico + + + + Jean-Yves Tinevez + https://imagej.net/people/tinevez + + tinevez + + + + Christian Tischer + https://imagej.net/people/tischi + + tischi + + + + Gabriella Turek + https://imagej.net/people/turekg + + turekg + + + + + + SciJava + https://groups.google.com/group/scijava + https://groups.google.com/group/scijava + scijava@googlegroups.com + https://groups.google.com/group/scijava + + + + scm:git:https://github.com/scijava/pom-scijava + scm:git:git@github.com:scijava/pom-scijava + https://github.com/scijava/pom-scijava + + + GitHub Issues + https://github.com/scijava/pom-scijava/issues + + + GitHub Actions + https://github.com/scijava/pom-scijava/actions + + + 3.4.2 + 3.4.2 + 2.0.1 + 0.5.4 + 2.0.2 + 2.0.2 + 1.11.0 + 1.18.0 + 3.0.1 + 3.0.1 + 1.2.10 + 2.1.1 + 2.0.2 + 2.0.1 + 3.0.0 + 3.0.6 + 2.0.7 + 2.5.0 + 3.0.3 + 2.1.0 + 2.1.0 + 1.0.6 + 2.1.8 + 2.1.2 + 2.1.2 + 2.3.0 + 2.3.0 + 2.0.4 + 2.0.3 + 2.0.1 + 2.0.8 + 2.1.1 + 3.1.3 + 2.0.1 + 2.0.1 + 2.0.1 + 1.0.2 + 2.3.5 + 1.1.5 + 1.1.1 + 2.0.2 + 2.0.1 + 4.2.2 + 4.2.2 + 2.0.2 + 3.0.1 + 3.0.1 + 2.0.1 + 2.0.0 + 2.0.1 + 3.0.0 + 4.1.2 + 4.1.2 + 2.0.2 + 2.0.1 + 5.0.0 + 5.0.0 + 2.0.1 + 2.0.1 + 2.0.1 + 7.1.1 + 2.1.1 + 1.6.2 + 1.6.2 + 3.0.1 + 2.0.0 + 2.0.0 + 1.1.2 + 1.1.2 + 2.0.2 + 2.0.2 + 2.0.5 + 4.2.1 + 2.0.2 + 5.0.25 + 4.3.4 + 2.0.3 + 2.0.3 + 2.0.1 + 3.1.10 + 1.0.5 + 2.1.1 + 2.1.1 + 2.0.2 + 2.0.2 + 2.1.2 + 2.0.1 + 3.1.9 + 3.1.9 + 1.7-fiji4 + 1.1.4 + 1.1.4 + 2.0.1 + 2.1.1 + 2.1.0 + 25.0.2 + 25.0.2 + 2.0.1 + 2.0.1 + 3.1.4 + 0.1.2 + 1.2.5 + 1.4.0 + 1.2.1 + 3.2.0 + 2.0.1 + 1.2.1 + 1.3.1 + 7.11.1 + 3.3.4 + 1.3.10 + 1.3.10 + 2.0.4 + 2.2.0 + 3.0.4 + 3.0.4 + 2.0.3 + 1.0.3 + 2.0.3 + 2.0.1 + 2.5.0 + 2.5.0 + 2.0.3 + 2.01.4 + <_3D_Blob_Segmentation.version>3.0.2 + <_3D_Objects_Counter.version>2.0.1 + <_3D_Viewer.version>4.0.5 + 1.2.7 + com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* + 1.10.14 + 1.10.14 + 3.5.3 + 2.7.7 + 3.5.3 + 2.7.7 + 3.5.3 + 4.11.1 + 4.11.1 + 2.26.0 + 2.33 + 2.33 + 9.6 + 9.6 + 9.6 + 9.6 + 9.6 + 1.10.4 + 1.10.4 + 3.3.1 + ${package-guess} + 1.12.667 + 1.12.667 + 1.12.667 + 2.6.13 + 2.6.13 + 0.4.2 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 10.4.13 + 3.1.2 + 1.0.0-beta-34 + 6.2.4 + 9.1.0 + 9.1.0 + 1.0.0 + 7.2.0 + 7.2.0 + 7.2.0 + 2.1.4 + 2.1.4 + 7.0.18 + 7.0.18 + 7.0.18 + 7.0.18 + 7.0.18 + 7.0.18 + 0.7.0 + 3.5.0 + 3.2.0 + 2.0.SP1 + 3.3.0 + 3.3.0 + 1.2.12 + 1.2.12 + 1.2.25 + 3.42.0 + 19.04.1 + 2.2.10 + 2.5.0.1 + 1.8.1.1 + 2.3.0.4 + 2.5.1.4 + 2.5.3.1 + 1.9.0.1 + 0.32.1.1 + 0.32.2.0 + 2.7 + 1.12.667 + 1.12.667 + 5.6.0 + 1.3.1 + 1.11.9 + 2.16.1 + 2.16.1 + 2.16.1 + 2.16.1 + 2.16.1 + 3.3.1 + 3.3.0 + 3.4.0 + 2.304 + 3.4 + 1.3.13 + 0.10.4 + 2.2.16 + 3.1.19 + 1.5.5-11 + 0.12.0 + 4.2.2 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.26.0 + 2.43.0 + 2.43.0 + 2.43.0 + 2.34.0 + 1.29.0 + 1.23.0 + 1.23.0 + 1.23.0 + 1.10.4 + 1.10.4 + 2.33.0 + 2.33.0 + 0.127.13 + 1.38.0 + 2.34.0 + 2.10.1 + 2.25.0 + 33.0.0-jre + 1.44.1 + 1.44.1 + 1.44.1 + 1.44.1 + 1.44.1 + 1.44.1 + 2.8 + 3.23.0 + 3.23.0 + 3.23.0 + 1.7 + 5.5.13.3 + 0.1.55 + 1.1.3 + 5.3 + 5.3 + 5.3 + 0.7.0 + 5.9 + 4.12.0 + 3.8.0 + 1.1.3 + 3.6.5 + 3.6.5 + 1.9.4 + 1.9.4 + 1.6.0 + 1.6.0 + 1.16.1 + 1.16.1 + 3.2.2 + 3.2.2 + 4.4 + 1.26.0 + 1.10.0 + 2.15.1 + 2.15.1 + 2.6 + 2.6 + 3.14.0 + 1.3.0 + 1.3.0 + 3.6.1 + 2.12.0 + 1.11.0 + 0.4.8 + 26 + 26 + 1.9.10 + 11.1.0 + 11.1.0 + 11.1.0 + 11.1.0 + 4.3 + 20151125 + 0.41 + 2.25.0 + 2.25.0 + 3.2.0 + + 0.12.0 + 1.7.0 + 6.1.1-1.5.10 + 2.1.3 + 2.15.0 + 2.304 + 3.4 + 7.2.0 + 7.2.0 + 7.2.0 + 2.23.0 + 1.6.2 + 2.43.0 + 2.43.0 + 2.43.0 + 3.6.5 + 2.5.0 + 2.5.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 2.3.0 + 1.23.0 + 1.23.0 + 1.23.0 + 1.23.0 + 2.33.0 + 2.33.0 + 0.127.13 + 1.38.0 + 2.34.0 + 1.44.1 + 1.44.1 + 1.44.1 + 1.44.1 + 1.44.1 + 1.44.1 + 1.0.3 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 1.5 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 1.62.2 + 1.62.2 + 2.10.1 + 33.0.0-jre + 1.14.3-1.5.10 + 1.8.0.10 + 1.8.0.10 + 4.5.14 + 4.4.16 + 4.5.14 + 0.3.0 + 0.3.0 + 3.6.5 + 1.54h + 1.2.6 + 2.0.4 + 0.2.0 + 6.0.2 + 1.2.1 + 0.7.5 + 0.1.2 + 0.8.1 + 0.7.1 + 1.0.0-5.6 + 1.0.0-5.6 + 0.1.3 + 2.0.0 + 0.1.1 + 0.8.1 + 0.3.1 + 0.3.2 + 0.3.3 + 0.8.4 + 0.2.0 + 1.1.7 + 0.3.1 + 1.0.1 + 1.0.1 + 2.15.0 + 1.54h + 2.15.0 + 0.2.1 + 0.3.1 + 0.14.0 + 1.0.0-beta-17 + 2.0.1 + 2.0.0 + 0.12.0 + 4.0.1 + 0.14.1 + 1.0.0 + 6.3.0 + 1.9.0 + 4.7.5 + 1.62.2 + 0.3.0 + 4.1.1 + 0.6.1 + 0.2.2 + 1.1.1 + 0.3.1 + 0.9.0 + 0.17.1 + 0.46.0 + 5.5.13.3 + 2.5.2 + 2.8 + 1.6.0-scijava-2 + 1.6.0-scijava-2 + 2.21.22 + 2.16.1 + 2.16.1 + 2.16.1 + 2.16.1 + 2.16.1 + 2.16.1 + 0.8.11 + 1.1.3 + 1.1.3 + 1.1.3 + 1.0.3 + 1.7.2 + 1.7.2 + 1.6.0-scijava-2 + 1.5.10 + 1.5.10 + - + 8.8.3 + 3.30.2-GA + 2.0.SP1 + 1.1.3 + 1.0.1 + 1.7.36 + 1.0.58 + 2.0.6.1 + 2.4.2 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 1.3.13 + 1.5.4 + 3.4.3 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 4.2.2 + 19.04.1 + 0.14 + 3.0.4 + 3.0.4 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 2.14.6 + 2.14.6 + 2.14.6 + 3.25.1 + 1.37 + 1.37 + 1.37 + 1.49 + 5.14.0 + 5.14.0 + 0.10.4 + 2.2.16 + 3.1.19 + 2.5.0 + 2.0.5 + 2.12.7 + 2.12.7 + 1.7.2 + 2.5.0 + 2.5.0 + 2.5.0 + 1.10.5 + 2.2.1 + 2.80b11 + 2.80b11 + 0.2.1 + 0.1.55 + 1.4 + 20240205 + 0.7.4-scijava + 5.10.2 + 5.10.2 + 5.10.2 + 5.10.2 + 5.10.2 + 5.10.2 + 4.13.2 + 4.13.2 + 0.2.4 + 0.2.4 + 2.7.3 + 2.7.3 + 1.1.3 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.8.0 + 1.8.0 + 1.8.0 + 5.6.0 + 0.1.17 + 0.3.11 + 3.3.0 + 1.1.10 + 1.84.1-1.5.10 + 1.0.2 + 1.12.0 + 1.12.0 + 1.12.0 + 2.4.0 + N/A + **/script_templates/** + N/A + This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. + 2.20.0 + 2.20.0 + 2.20.0 + 1.2.12 + 1.2.12 + 1.2.12 + 1.8.0 + + 3.1.0 + 3.1.0 + 0.13.1 + 3.6.0 + 3.3.2 + 3.3.2 + 3.8.1 + 3.9.6 + 3.6.1 + 3.1.1 + 3.4.1 + 3.2.5 + 3.1.0 + 1.45 + 3.4.0 + 3.1.1 + 3.6.0 + 3.3.0 + 3.6.3 + 3.11.0 + 3.11.0 + 3.5.0 + 3.0.1 + 3.3.1 + 3.5.2 + 3.12.1 + 3.3.0 + 3.2.5 + yyyy-MM-dd'T'HH:mm:ssZ + 8 + 8 + 8 + 8 + 8 + false + 5.3.6 + 5.3 + 5.3 + 5.3 + 5.3 + 20151125 + 2.2.2 + 1.3.1 + 2.19.0 + 2.19.0 + 1.5.0 + 1.5.0 + 1.5.0 + 1.5.0 + 3.2.7 + 0.2.0 + 4.0.2 + 1.1.1 + 4.0.0 + 2.1.0 + 4.0.2 + 7.0.0 + 1.3.2 + 6.0.1 + 1.2.1 + 1.0.2 + 3.1.3 + 2.5.0 + 1.2.7 + 0.4.8 + 2.2.10 + 2.5.0.1 + 1.8.1.1 + 2.3.0.4 + 2.5.1.4 + 2.5.3.1 + 1.9.0.1 + 0.32.1.1 + 0.32.2.0 + 1.54h + 1.2.6 + 2.0.4 + 0.2.0 + 6.0.2 + 1.2.1 + 0.7.5 + 0.1.2 + 0.8.1 + 0.7.1 + 1.0.0-5.6 + 1.0.0-5.6 + 0.1.3 + 2.0.0 + 0.1.1 + 0.8.1 + 0.3.1 + 0.3.2 + 0.3.3 + 0.8.4 + 0.2.0 + 1.1.7 + 0.3.1 + 1.0.1 + 1.0.1 + 2.15.0 + 0.1.4 + 0.2.1 + 0.3.1 + 0.14.0 + 1.0.0-beta-17 + 2.0.1 + 2.0.0 + 0.12.0 + 4.0.1 + 0.14.1 + 1.0.0 + 6.3.0 + 5.14.0 + 5.14.0 + 1.2.10 + 3.2.7 + 0.2.0 + 3.0.3 + 1.6.13 + 3.9.6 + 3.3 + 45.1.1 + 4.12.0 + 3.8.0 + 1.0.1 + 6.0.21 + 5.3.8 + 6.3.4 + 7.2.0 + 7.2.0 + 7.2.0 + 7.2.0 + 7.2.0 + 0.2.4 + 5.7.2 + 5.6.4 + 5.5.2 + 5.9.0 + 5.6.13 + 5.5.15 + 5.7.5 + 5.6.10 + 0.1.4 + 0.3.26-1.5.10 + 5.9 + 4.9.0-1.5.10 + 4.3.4 + 3.5.3 + 3.5.3 + 4.11.1 + 4.11.1 + 1.10.14 + 1.10.14 + 4.4 + 1.26.0 + 1.10.0 + 3.14.0 + 3.6.1 + 2.12.0 + 1.11.0 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.0.18 + 4.5.14 + 4.4.16 + 4.5.14 + 2.5.2 + 2.21.22 + 2.20.0 + 2.20.0 + 3.9.6 + 3.11.0 + 0.13.1 + 3.3.2 + 5.2.5 + 5.2.5 + 5.2.5 + 5.2.5 + 5.2.5 + 5.2.5 + 2.4.8 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 1.17 + 2.9 + 7.0.18 + 7.0.18 + 7.0.18 + 7.0.18 + 7.0.18 + 6.1.1-1.5.10 + 1.14.3-1.5.10 + 1.5.10 + 1.5.10 + 1.84.1-1.5.10 + 0.3.26-1.5.10 + 4.9.0-1.5.10 + 5.3.4-1.5.10 + 3.42.0 + 2.2.0 + 4.0.0 + 11.1.0 + 11.1.0 + 11.1.0 + 11.1.0 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 9.4.54.v20240208 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 4.3 + 0.41 + 1.1.5 + 1.0.2 + 4.0.2 + 1.1.1 + 4.0.0 + 2.1.0 + 4.0.2 + 7.0.0 + 1.3.2 + 6.0.1 + 1.2.1 + 3.1.3 + 3.30.2-GA + 2.0.6.1 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.9.22 + 1.8.0 + 1.8.0 + 1.5.4 + 3.4.3 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 1.4.0 + 0.14 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 3.25.1 + 1.49 + 2.0.5 + 2.5.0 + 2.5.0 + 1.7.2 + 1.7.2 + 1.7.2 + 2.5.0 + 2.5.0 + 2.5.0 + 2.5.0 + 1.10.5 + 2.80b11 + 1.0.58 + 2.2.1 + 20240205 + 5.10.2 + 5.10.2 + 5.10.2 + 5.10.2 + 5.10.2 + 5.10.2 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 2.2.1 + 1.0.1 + 1.8.0 + 3.1.0 + 2.19.0 + 4.2.1 + 3.3 + 45.1.1 + 1.37 + 1.37 + 5.3.6 + 1.0.1 + 6.0.21 + 5.3.8 + 6.3.4 + 5.7.2 + 5.6.4 + 5.5.2 + 5.9.0 + 5.6.13 + 5.5.15 + 5.7.5 + 5.6.10 + 9.6 + 9.6 + 9.6 + 9.6 + 9.6 + 42.7.2 + 2.7.3 + 0.4.2 + 1.6.0-scijava-2 + 1.6.0-scijava-2 + 2.4.2 + 0.7.4-scijava + 2.2.2 + 2.5.0 + 3.1.0 + 0.1.2 + 2.98.0 + 2.0.3 + 0.1.2 + 0.3.0 + 0.1.0 + 1.0.0-beta-3 + 1.0.6 + 1.0.1 + 0.2.0 + 0.2.4 + 0.3.1 + 0.1.3 + 0.1.4 + 2.0.4 + 1.0.2 + 0.1.7 + 1.0.1 + 1.1.0 + 0.2.1 + 1.0.0 + 0.4.1 + 0.1.6 + 1.0.0 + 0.4.1 + 1.0.0 + 0.3.1 + 1.0.1 + 0.2.1 + 0.5.3 + 0.3.0 + 0.2.3 + 0.3.2 + 1.0.2 + 2.0.8 + 1.6.0-scijava-2 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 0.2.1 + 2.7 + 2.6.0 + 2.6.0 + 3.2.9.RELEASE + 3.2.9.RELEASE + 3.2.9.RELEASE + 1.12.0 + 1.12.0 + 1.12.0 + 1.12.0 + 1.12.0 + 1.6.8 + 1.9 + 2.2 + ${package-guess} + 2.0.1 + 3.0.2 + 3.0.2 + 3.1.0 + 4.7.5 + 2.2.0 + 4.0.0 + 5.2.5 + 5.2.5 + 5.2.5 + 5.2.5 + 5.2.5 + 5.2.5 + 42.7.2 + + UTF-8 + UTF-8 + 2.34.0 + 1.29.0 + 1.12.0 + 3.23.0 + 3.23.0 + 3.23.0 + 3.23.0 + 1.7 + 1.11.9 + 3.0.8 + 2.0.1 + sonatype-oss-release + 1.2.25 + 0.28.1 + 0.15.0 + 3.4.0 + 3.0.2 + 2.0.1 + 4.0.5 + 3.4.2 + 2.0.1 + 0.5.4 + 2.0.2 + 1.11.0 + 1.18.0 + 3.0.1 + 3.0.1 + 2.1.1 + 2.0.2 + 2.0.1 + 3.0.0 + 3.0.6 + 2.0.7 + 2.5.0 + 3.0.3 + 2.1.0 + 1.0.6 + 2.1.8 + 2.1.2 + 2.3.0 + 2.0.4 + 2.0.3 + 2.0.1 + 2.0.8 + 2.1.1 + 3.1.3 + 2.0.1 + 2.0.1 + 1.0.2 + 2.3.5 + 1.1.1 + 2.0.2 + 2.0.1 + 4.2.2 + 2.0.2 + 3.0.1 + 3.0.1 + 2.0.1 + 2.0.0 + 2.0.1 + 3.0.0 + 4.1.2 + 4.1.2 + 2.0.2 + 2.0.1 + 5.0.0 + 5.0.0 + 2.0.1 + 2.0.1 + 7.1.1 + 2.1.1 + 3.0.1 + 2.0.0 + 2.0.0 + 1.1.2 + 2.0.2 + 2.0.5 + 2.0.2 + 5.0.25 + 2.0.3 + 2.0.1 + 3.1.10 + 1.0.5 + 2.1.1 + 2.0.2 + 2.1.2 + 2.0.1 + 3.1.9 + 1.7-fiji4 + 1.1.4 + 1.1.4 + 2.0.1 + 2.1.1 + 2.1.0 + 25.0.2 + 2.0.1 + 3.1.4 + 0.1.2 + 1.2.5 + 1.4.0 + 1.2.1 + 3.2.0 + 2.0.1 + 1.2.1 + 1.3.1 + 7.11.1 + 3.3.4 + 1.3.10 + 2.0.4 + 2.2.0 + 3.0.4 + 2.0.3 + 1.0.3 + 2.0.3 + 2.0.1 + 2.5.0 + 2.0.3 + 2.01.4 + 2.6.13 + 10.4.13 + 3.1.2 + 1.0.0-beta-34 + 6.2.4 + 9.1.0 + 1.0.0 + 2.1.4 + 2.1.3 + 2.15.0 + 0.1.17 + 0.3.11 + 1.1.10 + 1.0.2 + 2.0.1 + 3.0.2 + 3.0.8 + 2.0.1 + 2.2.7 + 1.0.1 + 2.0.0 + 2.1.1 + 1.1.2 + 4.1.1 + 0.6.1 + 0.2.2 + 1.1.1 + 0.3.1 + 0.9.0 + 0.17.1 + 0.46.0 + 0.1.2 + 2.1.1 + 2.98.0 + 2.0.3 + 0.1.2 + 0.3.0 + 0.1.0 + 1.0.0-beta-3 + 1.0.6 + 3.0.0 + 1.0.1 + 0.2.0 + 0.2.4 + 0.3.1 + 0.1.3 + 0.1.4 + 2.0.4 + 1.0.2 + 0.1.7 + 1.0.1 + com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* + scijava + **/script_templates/** + java + org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji + https://javadoc.scijava.org/Java8/ + https://javadoc.scijava.org/JavaFX8/ + [1.8.0-101,) + 8 + 8 + 3.6.3 + natives-linux_64 + linux-x86_64 + natives-linux-amd64 + linux-x86_64 + linux-x86_64 + natives-linux-amd64 + natives-linux-amd64 + natives-linux-amd64 + natives-linux-amd64 + linux-x86_64 + linux-x86_64 + linux-x86_64 + linux-x86_64 + 64 + x86_64 + amd64 + linux + linux + linux + linux + + founder,lead,developer,debugger,reviewer,support,maintainer + 1.1.0 + 0.2.1 + 1.0.0 + 0.4.1 + 0.1.6 + 1.0.0 + 0.4.1 + 1.0.0 + 0.3.1 + 1.0.1 + 0.2.1 + 0.5.3 + 0.3.0 + 0.2.3 + 0.3.2 + 2.6.0 + 2.6.0 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 1.7.36 + 2.7 + 2.2 + 3.10.0.2594 + https://s01.oss.sonatype.org + 2.4.8 + 2.4.8 + 2.2.7 + 3.2.9.RELEASE + 3.2.9.RELEASE + 3.2.9.RELEASE + 3.2.9.RELEASE + 1.0.2 + 1.12.0 + 5.3.4-1.5.10 + 0.12.0 + 1.6.8 + 1.2.0 + 1.0.1 + 2.0.0 + 3.0.3 + all + 2.0.8 + 1.6.0-scijava-2 + 1.7 + 2.16.2 + 1.0 + 2.1.1 + 3.9.6 + 3.9.6 + 2.9 + 1.9 + 1.1.2 + 1.5.5-11 + + + + + org.scijava + batch-processor + 0.4.2 + + + org.scijava + minimaven + 2.2.2 + + + org.scijava + native-lib-loader + 2.5.0 + + + org.scijava + parsington + 3.1.0 + + + org.scijava + scijava-cache + 0.1.2 + + + org.scijava + scijava-common + 2.98.0 + + + org.scijava + scijava-config + 2.0.3 + + + org.scijava + scijava-grab + 0.1.2 + + + org.scijava + scijava-io-http + 0.3.0 + + + org.scijava + scijava-java3d + 0.1.0 + + + org.scijava + scijava-listeners + 1.0.0-beta-3 + + + org.scijava + scijava-log-slf4j + 1.0.6 + + + org.scijava + scijava-optional + 1.0.1 + + + org.scijava + scijava-plot + 0.2.0 + + + org.scijava + scijava-plugins-commands + 0.2.4 + + + org.scijava + scijava-plugins-platforms + 0.3.1 + + + org.scijava + scijava-plugins-text-markdown + 0.1.3 + + + org.scijava + scijava-plugins-text-plain + 0.1.4 + + + org.scijava + scijava-search + 2.0.4 + + + org.scijava + scijava-table + 1.0.2 + + + org.scijava + scijava-ui-awt + 0.1.7 + + + org.scijava + scijava-ui-swing + 1.0.1 + + + org.scijava + script-editor + 1.0.0 + + + org.scijava + script-editor-jython + 1.1.0 + + + org.scijava + script-editor-scala + 0.2.1 + + + org.scijava + scripting-beanshell + 0.4.1 + + + org.scijava + scripting-clojure + 0.1.6 + + + org.scijava + scripting-groovy + 1.0.0 + + + org.scijava + scripting-java + 0.4.1 + + + org.scijava + scripting-javascript + 1.0.0 + + + org.scijava + scripting-jruby + 0.3.1 + + + org.scijava + scripting-jython + 1.0.1 + + + org.scijava + scripting-kotlin + 0.2.1 + + + org.scijava + scripting-matlab + 0.5.3 + + + org.scijava + scripting-python + 0.3.0 + + + org.scijava + scripting-renjin + 0.2.3 + + + org.scijava + scripting-scala + 0.3.2 + + + org.scijava + swing-checkbox-tree + 1.0.2 + + + org.scijava + ui-behaviour + 2.0.8 + + + net.imagej + imagej + 2.15.0 + + + net.imagej + ij + 1.54h + + + com.sun + tools + + + + + net.imagej + ij1-patcher + 1.2.6 + + + net.imagej + imagej-common + 2.0.4 + + + net.imagej + imagej-deprecated + 0.2.0 + + + net.imagej + imagej-launcher + 6.0.2 + + + net.imagej + imagej-legacy + 1.2.1 + + + net.imagej + imagej-matlab + 0.7.5 + + + net.imagej + imagej-mesh + 0.8.1 + + + net.imagej + imagej-mesh-io + 0.1.2 + + + net.imagej + imagej-notebook + 0.7.1 + + + net.imagej + imagej-omero + 1.0.0-5.6 + + + net.imagej + imagej-omero-legacy + 1.0.0-5.6 + + + net.imagej + imagej-opencv + 0.1.3 + + + net.imagej + imagej-ops + 2.0.0 + + + net.imagej + imagej-plugins-batch + 0.1.1 + + + net.imagej + imagej-plugins-commands + 0.8.1 + + + net.imagej + imagej-plugins-tools + 0.3.1 + + + net.imagej + imagej-plugins-uploader-ssh + 0.3.2 + + + net.imagej + imagej-plugins-uploader-webdav + 0.3.3 + + + net.imagej + imagej-scripting + 0.8.4 + + + net.imagej + imagej-server + 0.2.0 + + + net.imagej + imagej-tensorflow + 1.1.7 + + + net.imagej + imagej-ui-awt + 0.3.1 + + + net.imagej + imagej-ui-swing + 1.0.1 + + + net.imagej + imagej-updater + 1.0.1 + + + net.imagej + op-finder + 0.1.4 + + + net.imglib2 + imglib2 + 6.3.0 + + + net.imglib2 + imglib2-algorithm + 0.14.0 + + + net.imglib2 + imglib2-algorithm-fft + 0.2.1 + + + net.imglib2 + imglib2-algorithm-gpl + 0.3.1 + + + net.imglib2 + imglib2-cache + 1.0.0-beta-17 + + + net.imglib2 + imglib2-ij + 2.0.1 + + + net.imglib2 + imglib2-imglyb + 2.0.0 + + + net.imglib2 + imglib2-realtransform + 4.0.1 + + + net.imglib2 + imglib2-roi + 0.14.1 + + + net.imglib2 + imglib2-unsafe + 1.0.0 + + + io.scif + scifio + 0.46.0 + + + io.scif + scifio-bf-compat + 4.1.1 + + + io.scif + scifio-cli + 0.6.1 + + + io.scif + scifio-hdf5 + 0.2.2 + + + io.scif + scifio-jai-imageio + 1.1.1 + + + io.scif + scifio-labeling + 0.3.1 + + + io.scif + scifio-lifesci + 0.9.0 + + + io.scif + scifio-ome-xml + 0.17.1 + + + sc.fiji + fiji + 2.15.0 + + + sc.fiji + 3D_Blob_Segmentation + 3.0.2 + + + sc.fiji + 3D_Objects_Counter + 2.0.1 + + + sc.fiji + 3D_Viewer + 4.0.5 + + + sc.fiji + AnalyzeSkeleton_ + 3.4.2 + + + sc.fiji + Anisotropic_Diffusion_2D + 2.0.1 + + + sc.fiji + Archipelago_Plugins + 0.5.4 + + + sc.fiji + Arrow_ + 2.0.2 + + + sc.fiji + Auto_Local_Threshold + 1.11.0 + + + sc.fiji + Auto_Threshold + 1.18.0 + + + sc.fiji + BalloonSegmentation_ + 3.0.1 + + + sc.fiji + Bug_Submitter + 2.1.1 + + + sc.fiji + CPU_Meter + 2.0.2 + + + sc.fiji + Calculator_Plus + 2.0.1 + + + sc.fiji + Cell_Counter + 3.0.0 + + + sc.fiji + Colocalisation_Analysis + 3.0.6 + + + sc.fiji + Color_Histogram + 2.0.7 + + + sc.fiji + Color_Inspector_3D + 2.5.0 + + + sc.fiji + Colour_Deconvolution + 3.0.3 + + + sc.fiji + CorrectBleach_ + 2.1.0 + + + sc.fiji + Correct_3D_Drift + 1.0.6 + + + sc.fiji + Descriptor_based_registration + 2.1.8 + + + sc.fiji + Dichromacy_ + 2.1.2 + + + sc.fiji + Directionality_ + 2.3.0 + + + sc.fiji + FS_Align_TrakEM2 + 2.0.4 + + + sc.fiji + Feature_Detection + 2.0.3 + + + sc.fiji + Fiji_Archipelago + 2.0.1 + + + sc.fiji + Fiji_Developer + 2.0.8 + + + sc.fiji + Fiji_Package_Maker + 2.1.1 + + + sc.fiji + Fiji_Plugins + 3.1.3 + + + sc.fiji + FilamentDetector + 2.0.1 + + + sc.fiji + FlowJ_ + 2.0.1 + + + sc.fiji + Graph_Cut + 1.0.2 + + + sc.fiji + Gray_Morphology + 2.3.5 + + + org.janelia + H5J_Loader_Plugin + 1.1.5 + + + sc.fiji + HDF5_Vibez + 1.1.1 + + + sc.fiji + Helmholtz_Analysis + 2.0.2 + + + sc.fiji + IJ_Robot + 2.0.1 + + + sc.fiji + IO_ + 4.2.2 + + + sc.fiji + Image_5D + 2.0.2 + + + sc.fiji + Image_Expression_Parser + 3.0.1 + + + sc.fiji + Interactive_3D_Surface_Plot + 3.0.1 + + + sc.fiji + IsoData_Classifier + 2.0.1 + + + sc.fiji + Kappa + 2.0.0 + + + sc.fiji + Kuwahara_Filter + 2.0.1 + + + sc.fiji + KymographBuilder + 3.0.0 + + + sc.fiji + LSM_Reader + 4.1.2 + + + sc.fiji + LSM_Toolbox + 4.1.2 + + + sc.fiji + Lasso_and_Blow_Tool + 2.0.2 + + + sc.fiji + Linear_Kuwahara + 2.0.1 + + + sc.fiji + LocalThickness_ + 5.0.0 + + + sc.fiji + MTrack2_ + 2.0.1 + + + sc.fiji + M_I_P + 2.0.1 + + + sc.fiji + Manual_Tracking + 2.1.1 + + + sc.fiji + Multi_Kymograph + 3.0.1 + + + sc.fiji + OMEVisual + 2.0.0 + + + sc.fiji + PIV_analyser + 2.0.0 + + + sc.fiji + QuickPALM_ + 1.1.2 + + + sc.fiji + RATS_ + 2.0.2 + + + sc.fiji + Reconstruct_Reader + 2.0.5 + + + sc.fiji + SPIM_Opener + 2.0.2 + + + sc.fiji + SPIM_Registration + 5.0.25 + + + sc.fiji + Samples_ + 2.0.3 + + + sc.fiji + Series_Labeler + 2.0.1 + + + sc.fiji + Siox_Segmentation + 1.0.5 + + + sc.fiji + Skeletonize3D_ + 2.1.1 + + + sc.fiji + SplineDeformationGenerator_ + 2.0.2 + + + sc.fiji + Stack_Manipulation + 2.1.2 + + + sc.fiji + Statistical_Region_Merging + 2.0.1 + + + sc.fiji + Stitching_ + 3.1.9 + + + sc.fiji + Sync_Win + 1.7-fiji4 + + + sc.fiji + Thread_Killer + 2.0.1 + + + sc.fiji + Time_Lapse + 2.1.1 + + + sc.fiji + Time_Stamper + 2.1.0 + + + sc.fiji + ToAST_ + 25.0.2 + + + sc.fiji + TopoJ_ + 2.0.1 + + + sc.fiji + Trainable_Segmentation + 3.3.4 + + + sc.fiji + TrakEM2_Archipelago + 2.0.4 + + + sc.fiji + VIB-lib + 2.2.0 + + + sc.fiji + VIB_ + 3.0.4 + + + sc.fiji + Vaa3d_Reader + 2.0.3 + + + sc.fiji + Vaa3d_Writer + 1.0.3 + + + sc.fiji + Video_Editing + 2.0.1 + + + sc.fiji + View5D_ + 2.5.0 + + + sc.fiji + Volume_Calculator + 2.0.3 + + + sc.fiji + Volume_Viewer + 2.01.4 + + + sc.fiji + bUnwarpJ_ + 2.6.13 + + + sc.fiji + bij + 1.0.0 + + + sc.fiji + blockmatching_ + 2.1.4 + + + sc.fiji + fiji-lib + 2.1.3 + + + sc.fiji + legacy-imglib1 + 1.1.10 + + + sc.fiji + level_sets + 1.0.2 + + + sc.fiji + pal-optimization + 2.0.1 + + + sc.fiji + panorama_ + 3.0.2 + + + sc.fiji + register_virtual_stack_slices + 3.0.8 + + + sc.fiji + registration_3d + 2.0.1 + + + sc.fiji + weave_jy2java + 2.1.1 + + + jitk + jitk-tps + 3.0.4 + + + sc.fiji + bigwarp_fiji + 9.1.0 + + + com.googlecode.efficient-java-matrix-library + ejml + + + + + mpicbg + mpicbg + 1.5.0 + + + mpicbg + mpicbg_ + 1.5.0 + + + sc.fiji + trakem2_tps + 2.0.0 + + + sc.fiji + z_spacing + 1.1.2 + + + sc.fiji + bigdataviewer-core + 10.4.13 + + + sc.fiji + bigdataviewer-server + 3.1.2 + + + sc.fiji + bigdataviewer-vistools + 1.0.0-beta-34 + + + sc.fiji + bigdataviewer_fiji + 6.2.4 + + + sc.fiji + spim_data + 2.2.7 + + + sc.fiji + TrackMate + 7.11.1 + + + sc.fiji + TrackMate-Cellpose + 0.1.2 + + + sc.fiji + TrackMate-CSVImporter + 3.1.4 + + + sc.fiji + TrackMate-ExTrack + 1.2.5 + + + sc.fiji + TrackMate-Ilastik + 1.4.0 + + + sc.fiji + TrackMate-MorphoLibJ + 1.2.1 + + + sc.fiji + TrackMate-Oneat + 3.2.0 + + + sc.fiji + TrackMate-Skeleton + 2.0.1 + + + sc.fiji + TrackMate-StarDist + 1.2.1 + + + sc.fiji + TrackMate-Weka + 1.3.1 + + + sc.fiji + T2-NIT + 1.1.4 + + + sc.fiji + T2-TreelineGraph + 1.1.4 + + + sc.fiji + TrakEM2_ + 1.3.10 + + + sc.fiji + VectorString + 2.0.3 + + + sc.fiji + trakem2-transform + 1.0.1 + + + net.imglib2 + imglib2-label-multisets + 0.12.0 + + + org.janelia.saalfeldlab + n5 + 3.1.3 + + + org.janelia.saalfeldlab + n5-aws-s3 + 4.0.2 + + + org.janelia.saalfeldlab + n5-blosc + 1.1.1 + + + org.janelia.saalfeldlab + n5-google-cloud + 4.0.0 + + + org.janelia.saalfeldlab + n5-hdf5 + 2.1.0 + + + org.janelia.saalfeldlab + n5-ij + 4.0.2 + + + org.janelia.saalfeldlab + n5-imglib2 + 7.0.0 + + + org.janelia.saalfeldlab + n5-universe + 1.3.2 + + + org.janelia.saalfeldlab + n5-viewer_fiji + 6.0.1 + + + org.janelia.saalfeldlab + n5-zarr + 1.2.1 + + + fr.inra.ijpb + MorphoLibJ_ + 1.6.2 + + + net.haesleinhuepf + clij_ + 1.9.0.1 + + + net.haesleinhuepf + clij-core + 1.8.1.1 + + + net.haesleinhuepf + clij-coremem + 2.3.0.4 + + + net.haesleinhuepf + clij-clearcl + 2.5.0.1 + + + net.haesleinhuepf + clij2_ + 2.5.3.1 + + + net.haesleinhuepf + clij2-assistant_ + 2.5.1.4 + + + net.haesleinhuepf + clijx_ + 0.32.2.0 + + + net.haesleinhuepf + clijx-weka_ + 0.32.1.1 + + + net.preibisch + BigStitcher + 1.2.10 + + + net.preibisch + multiview-reconstruction + 3.2.7 + + + net.preibisch + multiview-simulation + 0.2.0 + + + org.bonej + bonej-plugins + 7.0.18 + + + org.bonej + bonej-ops + 7.0.18 + + + org.bonej + bonej-legacy-plugins_ + 7.0.18 + + + org.bonej + bonej-legacy-util_ + 7.0.18 + + + org.bonej + bonej-utilities + 7.0.18 + + + org.morphonets + SNT + 4.2.1 + + + org.jzy3d + jzy3d-emul-gl + + + org.jzy3d + jGL + + + + + sc.fiji + MaMuT + 7.1.1 + + + sc.fiji + labkit-pixel-classification + 0.1.17 + + + sc.fiji + labkit-ui + 0.3.11 + + + com.zeroc + glacier2 + 3.6.5 + + + com.zeroc + ice + 3.6.5 + + + org.openmicroscopy + metakit + 5.3.6 + + + ch.qos.logback + logback-classic + + + + + org.openmicroscopy + ome-codecs + 1.0.1 + + + org.openmicroscopy + ome-common + 6.0.21 + + + ch.qos.logback + logback-classic + + + xalan + serializer + + + xalan + xalan + + + + + org.openmicroscopy + ome-poi + 5.3.8 + + + org.openmicroscopy + ome-xml + 6.3.4 + + + ome + jxrlib-all + 0.2.4 + + + ome + bio-formats-tools + 7.2.0 + + + xalan + serializer + + + xalan + xalan + + + + + ome + bio-formats_plugins + 7.2.0 + + + ch.qos.logback + logback-classic + + + + + ome + formats-api + 7.2.0 + + + xalan + serializer + + + xalan + xalan + + + + + ome + formats-bsd + 7.2.0 + + + xalan + serializer + + + xalan + xalan + + + + + ome + formats-gpl + 7.2.0 + + + org.openmicroscopy + omero-blitz + 5.7.2 + + + com.sun.activation + javax.activation + + + org.apache.xmlgraphics + batik-all + + + + + org.openmicroscopy + omero-common + 5.6.4 + + + ch.qos.logback + logback-classic + + + + + org.openmicroscopy + omero-dsl-plugin + 5.5.2 + + + org.openmicroscopy + omero-gateway + 5.9.0 + + + org.openmicroscopy + omero-model + 5.6.13 + + + javax.transaction + jta + + + org.apache.solr + solr-commons-csv + + + + + org.openmicroscopy + omero-renderer + 5.5.15 + + + c3p0 + c3p0 + + + + + org.openmicroscopy + omero-romio + 5.7.5 + + + org.openmicroscopy + omero-server + 5.6.10 + + + c3p0 + c3p0 + + + com.sun.mail + javax.mail + + + javax.activation + activation + + + org.apache.xmlgraphics + batik-all + + + + + net.clearcontrol + coremem + 0.4.8 + + + com.google.android.tools + dx + + + + + net.clearvolume + cleargl + 2.2.10 + + + org.jogamp.gluegen + gluegen-rt-main + + + org.jogamp.jogl + jogl-all-main + + + + + net.algart + algart-tiff + 1.2.7 + + + com.amazonaws + aws-java-sdk-core + 1.12.667 + + + com.amazonaws + aws-java-sdk-s3 + 1.12.667 + + + antlr + antlr + 2.7.7 + + + org.antlr + ST4 + 4.3.4 + + + org.antlr + antlr + 3.5.3 + + + org.antlr + antlr-runtime + 3.5.3 + + + org.apache.ant + ant + 1.10.14 + + + org.apache.ant + ant-launcher + 1.10.14 + + + org.apache.groovy + groovy + 4.0.18 + + + org.apache.groovy + groovy-ant + 4.0.18 + + + org.apache.groovy + groovy-astbuilder + 4.0.18 + + + org.apache.groovy + groovy-cli-commons + 4.0.18 + + + org.apache.groovy + groovy-cli-picocli + 4.0.18 + + + org.apache.groovy + groovy-console + 4.0.18 + + + org.apache.groovy + groovy-contracts + 4.0.18 + + + org.apache.groovy + groovy-datetime + 4.0.18 + + + org.apache.groovy + groovy-dateutil + 4.0.18 + + + org.apache.groovy + groovy-docgenerator + 4.0.18 + + + org.apache.groovy + groovy-ginq + 4.0.18 + + + org.apache.groovy + groovy-groovydoc + 4.0.18 + + + org.apache.groovy + groovy-groovysh + 4.0.18 + + + org.apache.groovy + groovy-jmx + 4.0.18 + + + org.apache.groovy + groovy-json + 4.0.18 + + + org.apache.groovy + groovy-jsr223 + 4.0.18 + + + org.apache.groovy + groovy-macro + 4.0.18 + + + org.apache.groovy + groovy-macro-library + 4.0.18 + + + org.apache.groovy + groovy-nio + 4.0.18 + + + org.apache.groovy + groovy-servlet + 4.0.18 + + + org.apache.groovy + groovy-sql + 4.0.18 + + + org.apache.groovy + groovy-swing + 4.0.18 + + + org.apache.groovy + groovy-templates + 4.0.18 + + + org.apache.groovy + groovy-test + 4.0.18 + + + org.apache.groovy + groovy-test-junit5 + 4.0.18 + + + org.apache.groovy + groovy-testng + 4.0.18 + + + org.apache.groovy + groovy-toml + 4.0.18 + + + org.apache.groovy + groovy-typecheckers + 4.0.18 + + + org.apache.groovy + groovy-xml + 4.0.18 + + + org.apache.groovy + groovy-yaml + 4.0.18 + + + org.apache.ivy + ivy + 2.5.2 + + + org.apache.logging.log4j + log4j-api + 2.20.0 + + + org.apache.logging.log4j + log4j-core + 2.20.0 + + + org.apache.maven.shared + maven-artifact-transfer + 0.13.1 + + + org.apache.maven.shared + maven-common-artifact-filters + 3.3.2 + + + org.apache.maven + maven-core + 3.9.6 + + + org.apache.maven.plugin-tools + maven-plugin-tools-api + 3.11.0 + + + org.codehaus.plexus + plexus-component-annotations + 2.2.0 + + + org.codehaus.plexus + plexus-utils + 4.0.0 + + + org.sonatype.sisu + sisu-inject-bean + 2.6.0 + + + org.sonatype.sisu + sisu-inject-plexus + 2.6.0 + + + org.apache.poi + poi + 5.2.5 + + + org.apache.poi + poi-examples + 5.2.5 + + + org.apache.poi + poi-excelant + 5.2.5 + + + org.apache.poi + poi-ooxml + 5.2.5 + + + org.apache.poi + poi-ooxml-lite + 5.2.5 + + + org.apache.poi + poi-scratchpad + 5.2.5 + + + org.apache.spark + spark-core_2.11 + 2.4.8 + + + com.sun.jersey + jersey-core + + + commons-beanutils + commons-beanutils-core + + + io.netty + netty-all + + + + + org.apache.httpcomponents + httpclient + 4.5.14 + + + org.apache.httpcomponents + httpcore + 4.4.16 + + + org.apache.httpcomponents + httpmime + 4.5.14 + + + args4j + args4j + 2.33 + + + org.ow2.asm + asm + 9.6 + + + org.ow2.asm + asm-analysis + 9.6 + + + org.ow2.asm + asm-commons + 9.6 + + + org.ow2.asm + asm-tree + 9.6 + + + org.ow2.asm + asm-util + 9.6 + + + org.apache.xmlgraphics + batik-anim + 1.17 + + + org.apache.xmlgraphics + batik-awt-util + 1.17 + + + org.apache.xmlgraphics + batik-bridge + 1.17 + + + xalan + xalan + + + + + org.apache.xmlgraphics + batik-codec + 1.17 + + + org.apache.xmlgraphics + batik-constants + 1.17 + + + org.apache.xmlgraphics + batik-css + 1.17 + + + org.apache.xmlgraphics + batik-dom + 1.17 + + + xalan + xalan + + + + + org.apache.xmlgraphics + batik-ext + 1.17 + + + org.apache.xmlgraphics + batik-extension + 1.17 + + + org.apache.xmlgraphics + batik-gui-util + 1.17 + + + org.apache.xmlgraphics + batik-gvt + 1.17 + + + org.apache.xmlgraphics + batik-i18n + 1.17 + + + org.apache.xmlgraphics + batik-parser + 1.17 + + + org.apache.xmlgraphics + batik-rasterizer + 1.17 + + + org.apache.xmlgraphics + batik-rasterizer-ext + 1.17 + + + org.apache.xmlgraphics + batik-extensions + + + + + org.apache.xmlgraphics + batik-script + 1.17 + + + org.apache.xmlgraphics + batik-slideshow + 1.17 + + + org.apache.xmlgraphics + batik-squiggle + 1.17 + + + org.apache.xmlgraphics + batik-squiggle-ext + 1.17 + + + org.apache.xmlgraphics + batik-extensions + + + + + org.apache.xmlgraphics + batik-svg-dom + 1.17 + + + org.apache.xmlgraphics + batik-svggen + 1.17 + + + org.apache.xmlgraphics + batik-svgpp + 1.17 + + + org.apache.xmlgraphics + batik-swing + 1.17 + + + org.apache.xmlgraphics + batik-transcoder + 1.17 + + + org.apache.xmlgraphics + batik-ttf2svg + 1.17 + + + org.apache.xmlgraphics + batik-util + 1.17 + + + org.apache.xmlgraphics + batik-xml + 1.17 + + + org.apache.xmlgraphics + xmlgraphics-commons + 2.9 + + + org.lasersonlab + jblosc + 1.0.1 + + + com.nativelibs4java + bridj + 0.7.0 + + + com.google.android.tools + dx + + + + + javax.enterprise + cdi-api + 2.0.SP1 + + + org.checkerframework + checker-qual + 3.42.0 + + + commons-beanutils + commons-beanutils + 1.9.4 + + + commons-cli + commons-cli + 1.6.0 + + + commons-codec + commons-codec + 1.16.1 + + + commons-collections + commons-collections + 3.2.2 + + + org.apache.commons + commons-collections4 + 4.4 + + + org.apache.commons + commons-compress + 1.26.0 + + + org.apache.commons + commons-csv + 1.10.0 + + + commons-io + commons-io + 2.15.1 + + + commons-lang + commons-lang + 2.6 + + + org.apache.commons + commons-lang3 + 3.14.0 + + + commons-logging + commons-logging + 1.3.0 + + + org.apache.commons + commons-math3 + 3.6.1 + + + org.apache.commons + commons-pool2 + 2.12.0 + + + org.apache.commons + commons-text + 1.11.0 + + + cglib + cglib + 3.3.0 + + + dev.dirs + directories + 26 + + + org.eclipse.collections + eclipse-collections + 11.1.0 + + + org.eclipse.collections + eclipse-collections-api + 11.1.0 + + + org.eclipse.collections + eclipse-collections-forkjoin + 11.1.0 + + + org.eclipse.collections + eclipse-collections-testutils + 11.1.0 + + + org.eclipse.swt + org.eclipse.swt.cocoa.macosx + 4.3 + + + org.eclipse.swt + org.eclipse.swt.cocoa.macosx.x86_64 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.aix.ppc + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.aix.ppc64 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.hpux.ia64 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.linux.ppc + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.linux.ppc64 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.linux.s390 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.linux.s390x + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.linux.x86 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.linux.x86_64 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.solaris.sparc + 4.3 + + + org.eclipse.swt + org.eclipse.swt.gtk.solaris.x86 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.win32.win32.x86 + 4.3 + + + org.eclipse.swt + org.eclipse.swt.win32.win32.x86_64 + 4.3 + + + org.ejml + ejml-all + 0.41 + + + com.google.errorprone + error_prone_annotations + 2.25.0 + + + com.formdev + flatlaf + 3.4 + + + com.formdev + flatlaf-fonts-jetbrains-mono + 2.304 + + + com.google.api-client + google-api-client + 2.3.0 + + + com.google.api-client + google-api-client-android + 2.3.0 + + + com.google.api-client + google-api-client-appengine + 2.3.0 + + + com.google.api-client + google-api-client-gson + 2.3.0 + + + com.google.api-client + google-api-client-jackson2 + 2.3.0 + + + com.google.api-client + google-api-client-protobuf + 2.3.0 + + + com.google.api-client + google-api-client-servlet + 2.3.0 + + + javax.servlet + servlet-api + + + + + com.google.api-client + google-api-client-xml + 2.3.0 + + + com.google.api + api-common + 2.26.0 + + + com.google.api + gax + 2.43.0 + + + com.google.api + gax-grpc + 2.43.0 + + + com.google.api + gax-httpjson + 2.43.0 + + + com.google.api.grpc + proto-google-common-protos + 2.34.0 + + + com.google.api.grpc + proto-google-iam-v1 + 1.29.0 + + + com.google.auth + google-auth-library-appengine + 1.23.0 + + + com.google.auth + google-auth-library-credentials + 1.23.0 + + + com.google.auth + google-auth-library-oauth2-http + 1.23.0 + + + com.google.auto.value + auto-value + 1.10.4 + + + com.google.auto.value + auto-value-annotations + 1.10.4 + + + com.google.cloud + google-cloud-core + 2.33.0 + + + com.google.cloud + google-cloud-core-http + 2.33.0 + + + com.google.cloud + google-cloud-nio + 0.127.13 + + + com.google.cloud + google-cloud-resourcemanager + 1.38.0 + + + com.google.cloud + google-cloud-storage + 2.34.0 + + + com.google.http-client + google-http-client + 1.44.1 + + + com.google.http-client + google-http-client-apache-v2 + 1.44.1 + + + com.google.http-client + google-http-client-appengine + 1.44.1 + + + com.google.http-client + google-http-client-gson + 1.44.1 + + + com.google.http-client + google-http-client-jackson2 + 1.44.1 + + + com.google.http-client + google-http-client-xml + 1.44.1 + + + io.grpc + grpc-context + 1.62.2 + + + com.google.code.gson + gson + 2.10.1 + + + com.google.guava + guava + 33.0.0-jre + + + io.humble + humble-video-all + 0.3.0 + + + hsqldb + hsqldb + 1.8.0.10 + + + com.itextpdf + itextpdf + 5.5.13.3 + + + com.google.j2objc + j2objc-annotations + 2.8 + + + org.apache.jackrabbit + jackrabbit-webdav + 2.21.22 + + + org.slf4j + jcl-over-slf4j + + + + + com.fasterxml.jackson.core + jackson-annotations + 2.16.1 + + + com.fasterxml.jackson.core + jackson-core + 2.16.1 + + + com.fasterxml.jackson.core + jackson-databind + 2.16.1 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-cbor + 2.16.1 + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + 2.16.1 + + + com.sun.media + jai-codec + 1.1.3 + + + javax.media + jai-core + 1.1.3 + + + gov.nist.math + jama + 1.0.3 + + + org.scijava + j3dcore + 1.6.0-scijava-2 + + + org.scijava + j3dutils + 1.6.0-scijava-2 + + + org.scijava + vecmath + 1.6.0-scijava-2 + + + org.bytedeco + javacpp + 1.5.10 + + + org.bytedeco + javacv + 1.5.10 + + + org.bytedeco + ffmpeg + 6.1.1-1.5.10 + + + org.bytedeco + hdf5 + 1.14.3-1.5.10 + + + org.bytedeco + leptonica + 1.84.1-1.5.10 + + + org.bytedeco + openblas + 0.3.26-1.5.10 + + + org.bytedeco + opencv + 4.9.0-1.5.10 + + + org.bytedeco + tesseract + 5.3.4-1.5.10 + + + org.bytedeco + ffmpeg + 6.1.1-1.5.10 + linux-x86_64 + + + org.bytedeco + hdf5 + 1.14.3-1.5.10 + linux-x86_64 + + + org.bytedeco + leptonica + 1.84.1-1.5.10 + linux-x86_64 + + + org.bytedeco + openblas + 0.3.26-1.5.10 + linux-x86_64 + + + org.bytedeco + opencv + 4.9.0-1.5.10 + linux-x86_64 + + + org.bytedeco + tesseract + 5.3.4-1.5.10 + linux-x86_64 + + + org.javassist + javassist + 3.30.2-GA + + + org.jruby.jcodings + jcodings + 1.0.58 + + + org.jdom + jdom2 + 2.0.6.1 + + + org.scijava + jep + 2.4.2 + + + org.eclipse.jetty + jetty-annotations + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-client + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-continuation + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-deploy + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-http + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-http-spi + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-io + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-jaspi + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-jmx + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-jndi + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-nosql + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-plus + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-proxy + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-rewrite + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-security + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-server + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-servlet + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-servlets + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-spring + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-start + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-util + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-util-ajax + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-webapp + 9.4.54.v20240208 + + + org.eclipse.jetty + jetty-xml + 9.4.54.v20240208 + + + org.jfree + jfreechart + 1.5.4 + + + org.jfree + jfreesvg + 3.4.3 + + + org.jgrapht + jgrapht-core + 1.4.0 + + + org.jgrapht + jgrapht-demo + 1.4.0 + + + org.jgrapht + jgrapht-ext + 1.4.0 + + + org.jgrapht + jgrapht-guava + 1.4.0 + + + org.jgrapht + jgrapht-io + 1.4.0 + + + org.jgrapht + jgrapht-opt + 1.4.0 + + + it.unimi.dsi + fastutil + + + + + com.github.vlsi.mxgraph + jgraphx + 4.2.2 + + + cisd + jhdf5 + 19.04.1 + + + org.jheaps + jheaps + 0.14 + + + jline + jline + 2.14.6 + + + org.jline + jline-builtins + 3.25.1 + + + org.jline + jline-console + 3.25.1 + + + org.jline + jline-reader + 3.25.1 + + + org.jline + jline-remote-ssh + 3.25.1 + + + org.jline + jline-remote-telnet + 3.25.1 + + + org.jline + jline-style + 3.25.1 + + + org.jline + jline-terminal + 3.25.1 + + + org.jline + jline-terminal-jna + 3.25.1 + + + net.java.dev.jna + jna + 5.14.0 + + + net.java.dev.jna + jna-platform + 5.14.0 + + + com.github.jnr + jffi + 1.3.13 + + + com.github.jnr + jffi + 1.3.13 + native + + + com.github.jnr + jnr-constants + 0.10.4 + + + com.github.jnr + jnr-ffi + 2.2.16 + + + com.github.jnr + jnr-posix + 3.1.19 + + + joda-time + joda-time + 2.12.7 + + + org.jocl + jocl + 2.0.5 + + + org.jogamp.gluegen + gluegen + 2.5.0 + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + + + org.jogamp.joal + joal + 2.5.0 + + + org.jogamp.jocl + jocl + 2.5.0 + + + org.jogamp.jogl + jogl-all + 2.5.0 + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + natives-android-aarch64 + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + natives-linux-aarch64 + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + natives-linux-amd64 + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + natives-linux-armv6hf + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt + 2.5.0 + natives-windows-amd64 + + + org.jogamp.joal + joal + 2.5.0 + natives-android-aarch64 + + + org.jogamp.joal + joal + 2.5.0 + natives-linux-aarch64 + + + org.jogamp.joal + joal + 2.5.0 + natives-linux-amd64 + + + org.jogamp.joal + joal + 2.5.0 + natives-linux-armv6hf + + + org.jogamp.joal + joal + 2.5.0 + natives-macosx-universal + + + org.jogamp.joal + joal + 2.5.0 + natives-windows-amd64 + + + org.jogamp.jocl + jocl + 2.5.0 + natives-android-aarch64 + + + org.jogamp.jocl + jocl + 2.5.0 + natives-linux-aarch64 + + + org.jogamp.jocl + jocl + 2.5.0 + natives-linux-amd64 + + + org.jogamp.jocl + jocl + 2.5.0 + natives-linux-armv6hf + + + org.jogamp.jocl + jocl + 2.5.0 + natives-macosx-universal + + + org.jogamp.jocl + jocl + 2.5.0 + natives-windows-amd64 + + + org.jogamp.jogl + jogl-all + 2.5.0 + natives-android-aarch64 + + + org.jogamp.jogl + jogl-all + 2.5.0 + natives-linux-aarch64 + + + org.jogamp.jogl + jogl-all + 2.5.0 + natives-linux-amd64 + + + org.jogamp.jogl + jogl-all + 2.5.0 + natives-linux-armv6hf + + + org.jogamp.jogl + jogl-all + 2.5.0 + natives-macosx-universal + + + org.jogamp.jogl + jogl-all + 2.5.0 + natives-windows-amd64 + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + natives-android-aarch64 + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + natives-linux-aarch64 + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + natives-linux-amd64 + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + natives-linux-armv6hf + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + natives-macosx-universal + + + org.jogamp.jogl + jogl-all-noawt + 2.5.0 + natives-windows-amd64 + + + org.jogamp.java3d + java3d-core + 1.7.2 + + + org.jogamp.java3d + java3d-utils + 1.7.2 + + + org.jogamp.java3d + vecmath + 1.7.2 + + + org.joml + joml + 1.10.5 + + + org.jruby.joni + joni + 2.2.1 + + + org.jpedal + jpedalSTD + 2.80b11 + + + org.smurn + jply + 0.2.1 + + + com.jcraft + jsch + 0.1.55 + + + org.json + json + 20240205 + + + org.python + jython-slim + 2.7.3 + + + com.jcraft + jzlib + 1.1.3 + + + org.jzy3d + jzy3d-core + 2.2.1 + + + org.jzy3d + jzy3d-core-awt + 2.2.1 + + + org.jzy3d + jzy3d-emul-gl-awt + 2.2.1 + + + org.jzy3d + jzy3d-jGL-awt + 2.2.1 + + + org.jzy3d + jzy3d-jdt-core + 2.2.1 + + + org.jzy3d + jzy3d-native-jogl-awt + 2.2.1 + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-linux-aarch64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-armv6hf + + + org.jogamp.gluegen + gluegen-rt-natives-linux-i586 + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-windows-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-windows-i586 + + + org.jogamp.jogl + jogl-all-natives-linux-aarch64 + + + org.jogamp.jogl + jogl-all-natives-linux-amd64 + + + org.jogamp.jogl + jogl-all-natives-linux-armv6hf + + + org.jogamp.jogl + jogl-all-natives-linux-i586 + + + org.jogamp.jogl + jogl-all-natives-macosx-universal + + + org.jogamp.jogl + jogl-all-natives-windows-amd64 + + + org.jogamp.jogl + jogl-all-natives-windows-i586 + + + + + org.jzy3d + jzy3d-native-jogl-core + 2.2.1 + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-linux-aarch64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-armv6hf + + + org.jogamp.gluegen + gluegen-rt-natives-linux-i586 + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-windows-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-windows-i586 + + + org.jogamp.jogl + jogl-all-natives-linux-aarch64 + + + org.jogamp.jogl + jogl-all-natives-linux-amd64 + + + org.jogamp.jogl + jogl-all-natives-linux-armv6hf + + + org.jogamp.jogl + jogl-all-natives-linux-i586 + + + org.jogamp.jogl + jogl-all-natives-macosx-universal + + + org.jogamp.jogl + jogl-all-natives-windows-amd64 + + + org.jogamp.jogl + jogl-all-natives-windows-i586 + + + + + org.jzy3d + jzy3d-native-jogl-swing + 2.2.1 + + + com.miglayout + miglayout + + + + + org.jzy3d + jzy3d-tester + 2.2.1 + + + org.jetbrains.kotlin + kotlin-compiler-embeddable + 1.9.22 + + + org.jetbrains.kotlin + kotlin-daemon-embeddable + 1.9.22 + + + org.jetbrains.kotlin + kotlin-reflect + 1.9.22 + + + org.jetbrains.kotlin + kotlin-script-runtime + 1.9.22 + + + org.jetbrains.kotlin + kotlin-scripting-common + 1.9.22 + + + org.jetbrains.kotlin + kotlin-scripting-compiler-embeddable + 1.9.22 + + + org.jetbrains.kotlin + kotlin-scripting-jsr223 + 1.9.22 + + + org.jetbrains.kotlin + kotlin-scripting-jvm + 1.9.22 + + + org.jetbrains.kotlin + kotlin-stdlib + 1.9.22 + + + org.jetbrains.kotlin + kotlin-stdlib-common + 1.9.22 + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + 1.9.22 + + + org.jetbrains.kotlinx + kotlinx-coroutines-core + 1.8.0 + + + org.jetbrains.kotlinx + kotlinx-coroutines-core-jvm + 1.8.0 + + + com.esotericsoftware + kryo + 5.6.0 + + + com.esotericsoftware + minlog + 1.3.1 + + + com.esotericsoftware + reflectasm + 1.11.9 + + + ch.qos.logback + logback-classic + 1.2.12 + + + javax.activation + activation + + + + + ch.qos.logback + logback-core + 1.2.12 + + + org.lz4 + lz4-java + 1.8.0 + + + org.mapdb + mapdb + 3.1.0 + + + net.jpountz.lz4 + lz4 + + + + + com.miglayout + miglayout-core + 5.3 + + + com.miglayout + miglayout-swing + 5.3 + + + com.miglayout + miglayout-swt + 5.3 + + + edu.mines + mines-jtk + 20151125 + + + org.objenesis + objenesis + 3.3 + + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + com.squareup.okio + okio + 3.8.0 + + + org.ojalgo + ojalgo + 45.1.1 + + + com.opencsv + opencsv + 5.9 + + + info.picocli + picocli + 4.7.5 + + + org.postgresql + postgresql + 42.7.2 + + + com.google.protobuf + protobuf-java + 3.23.0 + + + com.google.protobuf + protobuf-java-util + 3.23.0 + + + com.google.protobuf + protobuf-kotlin + 3.23.0 + + + com.google.re2j + re2j + 1.7 + + + ch.qos.reload4j + reload4j + 1.2.25 + + + com.fifesoft + rsyntaxtextarea + 3.4.0 + + + com.fifesoft + autocomplete + 3.3.1 + + + com.fifesoft + languagesupport + 3.3.0 + + + org.slf4j + slf4j-api + 1.7.36 + + + org.slf4j + slf4j-ext + 1.7.36 + + + org.slf4j + slf4j-jcl + 1.7.36 + + + org.slf4j + slf4j-jdk14 + 1.7.36 + + + org.slf4j + slf4j-nop + 1.7.36 + + + org.slf4j + slf4j-simple + 1.7.36 + + + org.slf4j + jcl-over-slf4j + 1.7.36 + + + org.yaml + snakeyaml + 2.2 + + + org.snakeyaml + snakeyaml-engine + 2.7 + + + org.springframework + spring-aop + 3.2.9.RELEASE + + + org.springframework + spring-beans + 3.2.9.RELEASE + + + org.springframework + spring-core + 3.2.9.RELEASE + + + org.tensorflow + tensorflow + 1.12.0 + + + org.tensorflow + libtensorflow + 1.12.0 + + + org.tensorflow + libtensorflow_jni + 1.12.0 + + + org.tensorflow + libtensorflow_jni_gpu + 1.12.0 + + + org.tensorflow + proto + 1.12.0 + + + org.threeten + threetenbp + 1.6.8 + + + net.sf.trove4j + trove4j + 3.0.3 + + + nz.ac.waikato.cms.weka + weka-dev + 3.9.6 + + + com.github.fommil.netlib + all + + + com.github.vbmacher + java-cup-runtime + + + com.googlecode.netlib-java + netlib-java + + + com.sun.activation + jakarta.activation + + + nz.ac.waikato.cms.weka.thirdparty + java-cup-11b + + + nz.ac.waikato.cms.weka.thirdparty + java-cup-11b-runtime + + + net.sourceforge.f2j + arpack_combined_all + + + + + org.tukaani + xz + 1.9 + + + com.github.luben + zstd-jni + 1.5.5-11 + + + org.scijava + scijava-common + 2.98.0 + tests + test + + + net.imagej + imagej-legacy + 1.2.1 + tests + test + + + net.imagej + imagej-ops + 2.0.0 + tests + test + + + net.imagej + imagej-updater + 1.0.1 + tests + test + + + net.imglib2 + imglib2 + 6.3.0 + tests + test + + + org.janelia.saalfeldlab + n5 + 3.1.3 + tests + test + + + junit + junit + 4.13.2 + test + + + org.junit.jupiter + junit-jupiter-api + 5.10.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.10.2 + test + + + org.junit.jupiter + junit-jupiter-migrationsupport + 5.10.2 + test + + + org.junit.jupiter + junit-jupiter-params + 5.10.2 + test + + + org.junit.vintage + junit-vintage-engine + 5.10.2 + test + + + org.scijava + junit-benchmarks + 0.7.4-scijava + test + + + org.jmockit + jmockit + 1.49 + test + + + org.mockito + mockito-core + 2.19.0 + test + + + org.openjdk.jmh + jmh-core + 1.37 + test + + + org.openjdk.jmh + jmh-generator-annprocess + 1.37 + test + + + + + + + false + + central + Central Repository + https://repo.maven.apache.org/maven2 + + + + + + never + + + false + + central + Central Repository + https://repo.maven.apache.org/maven2 + + + + /home/elect/IdeaProjects/pom-scijava/src/main/java + /home/elect/IdeaProjects/pom-scijava/src/main/scripts + /home/elect/IdeaProjects/pom-scijava/src/test/java + /home/elect/IdeaProjects/pom-scijava/target/classes + /home/elect/IdeaProjects/pom-scijava/target/test-classes + + + org.apache.maven.wagon + wagon-webdav-jackrabbit + 1.0 + + + install + + + /home/elect/IdeaProjects/pom-scijava/src/main/resources + + + + + /home/elect/IdeaProjects/pom-scijava/src/test/resources + + + /home/elect/IdeaProjects/pom-scijava/target + pom-scijava-38.0.0-SNAPSHOT + + + + maven-antrun-plugin + 3.1.0 + + + maven-assembly-plugin + 3.6.0 + + + maven-clean-plugin + 3.3.2 + + + maven-compiler-plugin + 3.8.1 + + + maven-dependency-plugin + 3.6.1 + + + maven-deploy-plugin + 3.1.1 + + + maven-enforcer-plugin + 3.4.1 + + + org.codehaus.mojo + extra-enforcer-rules + 1.7.0 + compile + + + org.scijava + scijava-maven-plugin + 3.0.0 + compile + + + + + maven-failsafe-plugin + 3.2.5 + + + + integration-test + verify + + + + + + maven-gpg-plugin + 3.1.0 + + + sign-artifacts + verify + + sign + + + true + + + + + true + + + + maven-help-plugin + 3.4.0 + + + maven-install-plugin + 3.1.1 + + + maven-jar-plugin + 3.3.0 + + + + test-jar + + + + + true + true + true + + ${package-guess} + + + + ${buildNumber} + 2024-03-03T16:51:20+0000 + ${package-guess} + + + true + + + + + + + true + true + true + + ${package-guess} + + + + ${buildNumber} + 2024-03-03T16:51:20+0000 + ${package-guess} + + + true + + + + maven-javadoc-plugin + 3.6.3 + + 1024m + + https://javadoc.scijava.org/Java8/ + https://javadoc.scijava.org/JavaFX8/ + https://javadoc.scijava.org/SciJava/ + https://javadoc.scijava.org/Alida/ + https://javadoc.scijava.org/Bio-Formats/ + https://javadoc.scijava.org/FLIMLib/ + https://javadoc.scijava.org/Fiji/ + https://javadoc.scijava.org/Icy/ + https://javadoc.scijava.org/ImageJ/ + https://javadoc.scijava.org/ImageJ1/ + https://javadoc.scijava.org/ImgLib2/ + https://javadoc.scijava.org/Java3D/ + https://javadoc.scijava.org/KNIME/ + https://javadoc.scijava.org/LOCI/ + https://javadoc.scijava.org/MiToBo/ + https://javadoc.scijava.org/Micro-Manager-Core/ + https://javadoc.scijava.org/Micro-Manager-Studio/ + https://javadoc.scijava.org/MorphoLibJ/ + https://javadoc.scijava.org/OMERO/ + https://javadoc.scijava.org/SCIFIO/ + https://javadoc.scijava.org/Apache-Commons-IO/ + https://javadoc.scijava.org/Apache-Commons-Lang/ + https://javadoc.scijava.org/Apache-Commons-Math/ + https://javadoc.scijava.org/Apache-Commons-Text/ + https://javadoc.scijava.org/BoneJ/ + https://javadoc.scijava.org/Eclipse/ + https://javadoc.scijava.org/Guava/ + https://javadoc.scijava.org/JAMA/ + https://javadoc.scijava.org/JFreeChart/ + https://javadoc.scijava.org/JGraphT/ + https://javadoc.scijava.org/JHotDraw/ + https://javadoc.scijava.org/JOML/ + https://javadoc.scijava.org/Javassist/ + https://javadoc.scijava.org/MigLayout/ + https://javadoc.scijava.org/NetBeans/ + https://javadoc.scijava.org/Pivot/ + https://javadoc.scijava.org/VisAD/ + https://javadoc.scijava.org/Weka/ + https://javadoc.scijava.org/ojAlgo/ + + + + + maven-plugin-plugin + 3.11.0 + + + maven-project-info-reports-plugin + 3.5.0 + + + maven-release-plugin + 3.0.1 + + + maven-resources-plugin + 3.3.1 + + + maven-shade-plugin + 3.5.2 + + + maven-site-plugin + 3.12.1 + + + maven-source-plugin + 3.3.0 + + + attach-sources + none + + + attach-sources-jar + + jar + + + + + + maven-surefire-plugin + 3.2.5 + + @{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement=true + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + sanitize-version + + regex-property + + + sanitizedVersion + 38.0.0-SNAPSHOT + ^([0-9]+)\.([0-9]+)\.([0-9]+).*$ + $1.$2.$3 + false + + + + guess-package + + regex-property + + + package-guess + org.scijava.pom-scijava + [^a-z0-9_.]+ + _ + false + + + + + + org.codehaus.mojo + buildnumber-maven-plugin + 3.2.0 + + + validate + + create + + + true + UNKNOWN + + + + + + net.java.dev.jna + platform + 3.5.2 + compile + + + + true + UNKNOWN + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.7 + + + html + xml + + + + + org.codehaus.mojo + exec-maven-plugin + 3.2.0 + + + org.codehaus.mojo + license-maven-plugin + 2.4.0 + + false + true + true + + java + properties + java + + + + + org.codehaus.mojo + tidy-maven-plugin + 1.2.0 + + + org.codehaus.mojo + versions-maven-plugin + 2.16.2 + + + org.scijava + scijava-maven-plugin + 3.0.0 + + + set-rootdir + validate + + set-rootdir + + + + + + com.zenjava + javafx-maven-plugin + 8.8.3 + + SciJava Parent POM + SciJava Parent POM + SciJava Parent POM.jar + + ${sanitizedVersion} + true + + + + net.revelc.code + impsort-maven-plugin + 1.9.0 + + + none + + java.,javax.,com.,net.,org. + java,* + true + + + + + java.,javax.,com.,net.,org. + java,* + true + + + + net.revelc.code.formatter + formatter-maven-plugin + 2.23.0 + + + org.scijava + scijava-coding-style + 2.1.1 + compile + + + + eclipse-formatter-settings/scijava-coding-style.xml + + + + org.fusesource.mvnplugins + maven-graph-plugin + 1.45 + + provided,runtime,system,test + true + + /home/elect/IdeaProjects/pom-scijava/target/dependency-graph.dot + + + + org.honton.chas + exists-maven-plugin + 0.12.0 + + + + remote + + + + + + org.jacoco + jacoco-maven-plugin + 0.8.11 + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + package + + report + + + + + + org.revapi + revapi-maven-plugin + 0.15.0 + + + org.revapi + revapi-java + 0.28.1 + + + + + org.sonarsource.scanner.maven + sonar-maven-plugin + 3.10.0.2594 + + + + + + maven-enforcer-plugin + 3.4.1 + + + enforce-rules + + enforce + + + + + 3.6.3 + + + Plugins need to be versioned! + + + [1.8.0-101,) + + + No Duplicate Classes Allowed! +- For duplicate transitive dependencies, add dependency exclusions. +- For duplications between direct dependencies, resolve or add + ignored classes to this rule's configuration. + true + com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* + + + founder,lead,developer,debugger,reviewer,support,maintainer + + + founder,lead,developer,debugger,reviewer,support,maintainer + + + 8 + + com.headius:invokebinder + com.sun:tools + + + module-info + + + test + + + + + name + description + url + inceptionYear + organization + licenses + developers + contributors + mailingLists + scm + issueManagement + ciManagement + properties//license.licenseName + properties//license.copyrightOwners + + + + org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji + + + + + + + + org.codehaus.mojo + extra-enforcer-rules + 1.7.0 + compile + + + org.scijava + scijava-maven-plugin + 3.0.0 + compile + + + + + + 3.6.3 + + + Plugins need to be versioned! + + + [1.8.0-101,) + + + No Duplicate Classes Allowed! +- For duplicate transitive dependencies, add dependency exclusions. +- For duplications between direct dependencies, resolve or add + ignored classes to this rule's configuration. + true + com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* + + + founder,lead,developer,debugger,reviewer,support,maintainer + + + founder,lead,developer,debugger,reviewer,support,maintainer + + + 8 + + com.headius:invokebinder + com.sun:tools + + + module-info + + + test + + + + + name + description + url + inceptionYear + organization + licenses + developers + contributors + mailingLists + scm + issueManagement + ciManagement + properties//license.licenseName + properties//license.copyrightOwners + + + + org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji + + + + + + maven-failsafe-plugin + 3.2.5 + + + + integration-test + verify + + + + + + maven-source-plugin + 3.3.0 + + + attach-sources + none + + + attach-sources-jar + + jar + + + + + + maven-surefire-plugin + 3.2.5 + + @{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement=true + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.5.0 + + + sanitize-version + + regex-property + + + sanitizedVersion + 38.0.0-SNAPSHOT + ^([0-9]+)\.([0-9]+)\.([0-9]+).*$ + $1.$2.$3 + false + + + + guess-package + + regex-property + + + package-guess + org.scijava.pom-scijava + [^a-z0-9_.]+ + _ + false + + + + + + org.codehaus.mojo + buildnumber-maven-plugin + 3.2.0 + + + validate + + create + + + true + UNKNOWN + + + + + + net.java.dev.jna + platform + 3.5.2 + compile + + + + true + UNKNOWN + + + + org.scijava + scijava-maven-plugin + 3.0.0 + + + set-rootdir + validate + + set-rootdir + + + older + + + + populate-app + install + + populate-app + + + older + + + + + older + + + + com.zenjava + javafx-maven-plugin + 8.8.3 + + SciJava Parent POM + SciJava Parent POM + SciJava Parent POM.jar + + ${sanitizedVersion} + true + + + + net.revelc.code + impsort-maven-plugin + 1.9.0 + + + none + + java.,javax.,com.,net.,org. + java,* + true + + + + + java.,javax.,com.,net.,org. + java,* + true + + + + net.revelc.code.formatter + formatter-maven-plugin + 2.23.0 + + + org.scijava + scijava-coding-style + 2.1.1 + compile + + + + eclipse-formatter-settings/scijava-coding-style.xml + + + + org.fusesource.mvnplugins + maven-graph-plugin + 1.45 + + provided,runtime,system,test + true + + /home/elect/IdeaProjects/pom-scijava/target/dependency-graph.dot + + + + org.jacoco + jacoco-maven-plugin + 0.8.11 + + + jacoco-initialize + + prepare-agent + + + + jacoco-site + package + + report + + + + + + maven-javadoc-plugin + 3.6.3 + + /usr/lib/jvm/jdk-19/bin/javadoc + 1024m + + https://javadoc.scijava.org/Java8/ + https://javadoc.scijava.org/JavaFX8/ + https://javadoc.scijava.org/SciJava/ + https://javadoc.scijava.org/Alida/ + https://javadoc.scijava.org/Bio-Formats/ + https://javadoc.scijava.org/FLIMLib/ + https://javadoc.scijava.org/Fiji/ + https://javadoc.scijava.org/Icy/ + https://javadoc.scijava.org/ImageJ/ + https://javadoc.scijava.org/ImageJ1/ + https://javadoc.scijava.org/ImgLib2/ + https://javadoc.scijava.org/Java3D/ + https://javadoc.scijava.org/KNIME/ + https://javadoc.scijava.org/LOCI/ + https://javadoc.scijava.org/MiToBo/ + https://javadoc.scijava.org/Micro-Manager-Core/ + https://javadoc.scijava.org/Micro-Manager-Studio/ + https://javadoc.scijava.org/MorphoLibJ/ + https://javadoc.scijava.org/OMERO/ + https://javadoc.scijava.org/SCIFIO/ + https://javadoc.scijava.org/Apache-Commons-IO/ + https://javadoc.scijava.org/Apache-Commons-Lang/ + https://javadoc.scijava.org/Apache-Commons-Math/ + https://javadoc.scijava.org/Apache-Commons-Text/ + https://javadoc.scijava.org/BoneJ/ + https://javadoc.scijava.org/Eclipse/ + https://javadoc.scijava.org/Guava/ + https://javadoc.scijava.org/JAMA/ + https://javadoc.scijava.org/JFreeChart/ + https://javadoc.scijava.org/JGraphT/ + https://javadoc.scijava.org/JHotDraw/ + https://javadoc.scijava.org/JOML/ + https://javadoc.scijava.org/Javassist/ + https://javadoc.scijava.org/MigLayout/ + https://javadoc.scijava.org/NetBeans/ + https://javadoc.scijava.org/Pivot/ + https://javadoc.scijava.org/VisAD/ + https://javadoc.scijava.org/Weka/ + https://javadoc.scijava.org/ojAlgo/ + + + + + maven-clean-plugin + 3.3.2 + + + default-clean + clean + + clean + + + + + + maven-install-plugin + 3.1.1 + + + default-install + install + + install + + + + + + maven-deploy-plugin + 3.1.1 + + + default-deploy + deploy + + deploy + + + + + + maven-site-plugin + 3.12.1 + + + default-site + site + + site + + + /home/elect/IdeaProjects/pom-scijava/target/site + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + + + default-deploy + site-deploy + + deploy + + + /home/elect/IdeaProjects/pom-scijava/target/site + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + + + + /home/elect/IdeaProjects/pom-scijava/target/site + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + + + + + /home/elect/IdeaProjects/pom-scijava/target/site + + + maven-javadoc-plugin + + + + diff --git a/gradle/catalog/settings.gradle.kts b/gradle/catalog/settings.gradle.kts new file mode 100644 index 0000000..8d99556 --- /dev/null +++ b/gradle/catalog/settings.gradle.kts @@ -0,0 +1,12 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html + */ + +rootProject.name = "gradle-catalog" + +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index f29fa93..71e2a05 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -1,21 +1,25 @@ import groovy.xml.XmlSlurper import groovy.xml.slurpersupport.GPathResult import groovy.xml.slurpersupport.NodeChild +import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude plugins { `java-platform` - `maven-publish` + publish } -tasks { - register("eff.xml") { - commandLine("bash", "-c", "mvn -B -f \"../../pom.xml\" help:effective-pom | grep -A9999999 '^' > eff.xml") - } -} +group = "org.scijava" +version = "0.1" //(effXml / "version").toString() operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult -val effXml = XmlSlurper().parse("platform/eff.xml") +val effXml = XmlSlurper().parse(projectDir.resolve("eff.xml")) + +javaPlatform { + allowDependencies() +} + +val runtimeDeps = listOf("xalan:serializer", "xalan:xalan") dependencies { @@ -26,112 +30,42 @@ dependencies { val g = node / "groupId" val a = node / "artifactId" val v = node / "version" - api("$g:$a:$v") + if ("$g:$a" in runtimeDeps) + runtime("$g:$a:$v") + else + api("$g:$a:$v") // println("$g:$a:$v") } } + // versionCatalogs.forEach { versionCatalog -> + // println("catalog ${versionCatalog.name}") + // versionCatalog.libraryAliases.forEach { + // println(versionCatalog.findLibrary(it).get().get()) + // } + // } + + api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) + // api(platform("com.google.api-client:google-api-client-bom:" + libs.com.google.api.client.googleApiClient.get().version)) + // api(platform("com.google.api:gax-bom:" + libs.com.google.api.gax.get().version)) + // api(platform("com.google.api:gapic-generator-java-bom:" + libs.com.google.api.grpc.protoGoogleCommonProtos.get().version)) + // api(platform("com.google.auth:google-auth-library-bom:" + libs.com.google.auth.googleAuthLibraryAppengine.get().version)) + // // no google auto-value bom + // api(platform("com.google.cloud:google-cloud-core-bom:" + libs.com.google.cloud.googleCloudCore.get().version)) } -publishing { - publications { - repositories { - maven("to fill") - } - create("sciJavaPlatform") { - groupId = "org.scijava" - artifactId = "pom-scijava" - version = (effXml / "version").toString() - from(components["javaPlatform"]) - pom { - name = "SciJava Parent POM" - description = "This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins." - url = "https://scijava.org/" - inceptionYear = "2011" - organization { - name = "SciJava" - url = "https://scijava.org/" - } - licenses { - license { - name = "Unlicense" - url = "https://unlicense.org/" - distribution = "repo" - } - } - developers { - developer { - id = "ctrueden" - name = "Curtis Rueden" - url = "https://imagej.net/people/ctrueden" - roles.addAll("founder", "lead", "developer", "debugger", "reviewer", "support", "maintainer") - } - } - contributors { - operator fun String.invoke(id: String) = contributor { - name = this@invoke - url = "https://imagej.net/people/$id" - properties = mapOf("id" to id) - } - "Mark Hiner"("hinerm") - "Johannes Schindelin"("dscho") - "Sébastien Besson"("sbesson") - "John Bogovic"("bogovicj") - "Nicolas Chiaruttini"("NicoKiaru") - "Barry DeZonia"("bdezonia") - "Richard Domander"("rimadoma") - "Karl Duderstadt"("karlduderstadt") - "Jan Eglinger"("imagejan") - "Gabriel Einsdorf"("gab1one") - "Tiago Ferreira"("tferr") - contributor { - name = "David Gault" - properties = mapOf("id" to "dgault") - } - "Ulrik Günther"("skalarproduktraum") - "Philipp Hanslovsky"("hanslovsky") - "Stefan Helfrich"("stelfrich") - "Cameron Lloyd"("camlloyd") - "Hadrien Mary"("hadim") - "Tobias Pietzsch"("tpietzsch") - "Stephan Preibisch"("StephanPreibisch") - "Stephan Saalfeld"("axtimwalde") - "Deborah Schmidt"("frauzufall") - "Lorenzo Scianatico"("LoreScianatico") - "Jean - Yves Tinevez"("tinevez") - "Christian Tischer"("tischi") - "Gabriella Turek"("turekg") - contributor { - name = "Giuseppe Barbieri" - properties = mapOf("id" to "elect") - } - } - mailingLists { - mailingList { - name = "SciJava" - subscribe = "https://groups.google.com/group/scijava" - unsubscribe = subscribe - post = "scijava@googlegroups.com" - archive = "https://groups.google.com/group/scijava" - } - } - scm { - connection = "scm:git:https://github.com/scijava/pom-scijava" - developerConnection = "scm:git:git@github.com:scijava/pom-scijava" - tag = "HEAD" - url = "https://github.com/scijava/pom-scijava" - } - issueManagement { - system = "GitHub Issues" - url = "https://github.com/scijava/pom-scijava/issues" - } - ciManagement { - system = "GitHub Actions" - url = "https: //github.com/scijava/pom-scijava/actions" - } - } - } - } -} +tasks { + // named("generatePomFileForSciJavaPlatformPublication") { + // pom.withXml { + // asNode().appendNode("parent").apply { + // appendNode("groupId", group) + // appendNode("artifactId", project.name) + // appendNode("version", version) + // appendNode("relativePath") + // } + // println(asNode().name()) + // } + // } +} \ No newline at end of file diff --git a/gradle/platform/buildSrc/build.gradle.kts b/gradle/platform/buildSrc/build.gradle.kts new file mode 100644 index 0000000..790460f --- /dev/null +++ b/gradle/platform/buildSrc/build.gradle.kts @@ -0,0 +1,13 @@ + +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() +// gradlePluginPortal() +} + +//dependencies { +// implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.9.10") +//} \ No newline at end of file diff --git a/gradle/platform/buildSrc/settings.gradle.kts b/gradle/platform/buildSrc/settings.gradle.kts new file mode 100644 index 0000000..8ae9b3a --- /dev/null +++ b/gradle/platform/buildSrc/settings.gradle.kts @@ -0,0 +1,4 @@ +// This is an empty umbrella build including all the component builds. +// This build is not necessarily needed. The component builds work independently. + +rootProject.name = "buildSrc" \ No newline at end of file diff --git a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts new file mode 100644 index 0000000..8dd418e --- /dev/null +++ b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts @@ -0,0 +1,235 @@ +import groovy.util.Node +import groovy.util.NodeList +import java.util.* + +plugins { + `maven-publish` +} + +publishing { + publications { + repositories { + maven { + name = "sciJava" + credentials(PasswordCredentials::class) + url = uri("https://maven.scijava.org/content/repositories/releases") + } + } + create("sciJavaPlatform") { + from(components["javaPlatform"]) + /*pom.withXml { + val nodes = Stack() + + nodes += asNode() + fun parent() = nodes.peek() + // Definition of `groupId` is redundant, because it's inherited from the parent + run { + val list = parent().children() as NodeList + require(list.removeIf { (it as Node).name().toString().substringAfter("{http://maven.apache.org/POM/4.0.0}") == "groupId" }) + } + + var i = 1 // 4.0.0 is first + + operator fun String.invoke(vararg values: Any?) { + for (value in values) { + val node = when (value) { + null -> parent().appendNode(this) + else -> parent().appendNode(this, value) + } + if (nodes.size == 1) { // only at `project` level + val list = parent().value() as NodeList + list.removeLast() + list.add(i++, node) + } + } + } + + // operator fun String.compareTo(value: Any): Int { + // return 0 + // } + + operator fun String.invoke(block: () -> Unit) { + val node = parent() + nodes += node.appendNode(this) + block() + if (nodes.size == 2) { // only as `project` child + val list = node.value() as NodeList + list.removeLast() + list.add(i++, parent()) + } + nodes.pop() + } + + // fun comment(text: String) { + // val builder = asString() + // builder.insert(builder.lastIndex - "".length, text.trimMargin()) + // } + + "parent" { + "groupId"(group) + "artifactId"(project.name) + "version"(version) + "relativePath"() + } + // + // + // + i += 3 + "name"("SciJava Parent POM") + "description"("This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins.") + "url"("https://scijava.org/") + "inceptionYear"("2011") + "organization" { + "name"("SciJava") + "url"("https://scijava.org/") + } + "licenses" { + "license" { + "name"("Unlicense") + "url"("https://unlicense.org/") + "distribution"("repo") + } + } + "developers" { + "developer" { + "id"("ctrueden") + "name"("Curtis Rueden") + "url"("https://imagej.net/people/ctrueden") + "roles" { + "role"("founder", "lead", "developer", "debugger", "reviewer", "support", "maintainer") + } + } + } + "contributors" { + operator fun String.minus(id: String) = "contributor" { + "name"(this) + "url"("https://imagej.net/people/$id") + "properties" { "id"(id) } + } + "Mark Hiner" - "hinerm" + "Johannes Schindelin" - "dscho" + "Sébastien Besson" - "sbesson" + "John Bogovic" - "bogovicj" + "Nicolas Chiaruttini" - "NicoKiaru" + "Barry DeZonia" - "bdezonia" + "Richard Domander" - "rimadoma" + "Karl Duderstadt" - "karlduderstadt" + "Jan Eglinger" - "imagejan" + "Gabriel Einsdorf" - "gab1one" + "Tiago Ferreira" - "tferr" + "contributor" { + "name"("David Gault") + "properties" { "id"("dgault") } + } + "Ulrik Günther" - "skalarproduktraum" + "Philipp Hanslovsky" - "hanslovsky" + "Stefan Helfrich" - "stelfrich" + "Cameron Lloyd" - "camlloyd" + "Hadrien Mary" - "hadim" + "Tobias Pietzsch" - "tpietzsch" + "Stephan Preibisch" - "StephanPreibisch" + "Stephan Saalfeld" - "axtimwalde" + "Deborah Schmidt" - "frauzufall" + "Lorenzo Scianatico" - "LoreScianatico" + "Jean - Yves Tinevez" - "tinevez" + "Christian Tischer" - "tischi" + "Gabriella Turek" - "turekg" + "contributor" { + "name"("Giuseppe Barbieri") + "properties" { "id"("elect") } + } + } + "mailingLists" { + "mailingList" { + "name"("SciJava") + "subscribe"("https://groups.google.com/group/scijava") + "unsubscribe"("https://groups.google.com/group/scijava") + "post"("scijava@googlegroups.com") + "archive"("https://groups.google.com/group/scijava") + } + } + "scm" { + "connection"("scm:git:https://github.com/scijava/pom-scijava") + "developerConnection"("scm:git:git@github.com:scijava/pom-scijava") + "tag"("HEAD") + "url"("https://github.com/scijava/pom-scijava") + } + "issueManagement" { + "system"("GitHub Issues") + "url"("https://github.com/scijava/pom-scijava/issues") + } + "ciManagement" { + "system"("GitHub Actions") + "url"("https: //github.com/scijava/pom-scijava/actions") + } + "properties" { + // HACK: The following list of allowed-to-be-duplicated classes + // facilitates intended combinations of artifacts: + // == + // Classes: com.google.inject.* + // Part of: com.google.inject:guice:no_aop + // Also in: org.sonatype.sisu:sisu-guice + // Enables: + // org.apache.maven:maven-core (guice) + + // org.apache.maven.shared:maven-common-artifact-filters (sisu-guice) + // == + // Class: javax.xml.namespace.QName + // Part of: Java Runtime Environment + // Also in: xml-apis:xml-apis, xpp3:xpp3 + // Enables: xml-apis:xml-apis + xpp3:xpp3 + // == + // TEMP: Until scijava/scripting-jruby#5 is resolved. + // Classes: jnr.ffi.* + // Part of: com.github.jnr:jnr-ffi + // Also in: org.jruby:jruby-core + // Enables: org.jruby:jruby-core + org.python:jython-slim (jnr-ffi) + // == + // Classes: org.apache.hadoop.yarn.*.package-info + // Part of: org.apache.hadoop:hadoop-yarn-* + // Enables: + // org.apache.hadoop:hadoop-yarn- + + // org.apache.hadoop:hadoop-yarn- + // == + // Classes: org.apache.spark.unused.UnusedStubClass + // Part of: org.apache.spark:spark-* + // Enables: org.apache.spark:spark-core_2.11 (spark-*) + // == + // Classes: org.eclipse.aether.* + // Part of: + // org.apache.maven.resolver:maven-resolver-api + // org.apache.maven.resolver:maven-resolver-util + // org.apache.maven.shared:maven-artifact-transfer + // org.eclipse.aether:aether-api + // org.eclipse.aether:aether-util + // Enables: dependence on Apache Maven libraries + // == + // Classes: org.hibernate.stat.ConcurrentStatisticsImpl + // Part of: org.hibernate:hibernate-core + // Also in: org.openmicroscopy:omero-blitz + // Enables: + // org.openmicroscopy:omero-blitz + + // org.openmicroscopy:omero-model (hibernate-core) + // == + // Classes: org.junit.runner.Runner + // Part of: junit:junit + // Also in: org.jmockit:jmockit + // Enables: junit:junit + org.jmockit:jmockit + // == + // Classes: org.jzy3d.plot3d.pipelines.* + // Part of: org.jzy3d:jzy3d-core, org.jzy3d:jzy3d-native-jogl-awt + // Enables: org.jzy3d:jzy3d-core + org.jzy3d:jzy3d-native-jogl-awt + "scijava.allowedDuplicateClasses"("com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.*") + // NB: The scijava.allowedDuplicateClasses property above makes it easier to + // append to the list of allowed duplicate classes in downstream projects. + // Simply override the property in your POM with something like this: + // "allowedDuplicateClasses"("\${scijava.allowedDuplicateClasses},com.example.AnotherDuplicate") + "allowedDuplicateClasses"("\${scijava.allowedDuplicateClasses}") + // NB: We override these properties to make the enforcer happy. + // You will need to override them in your POM, too... to valid values. + "license.licenseName"("N/A") + "license.copyrightOwners"("N/A") + } + }*/ + } + } +} \ No newline at end of file diff --git a/gradle/platform/settings.gradle.kts b/gradle/platform/settings.gradle.kts new file mode 100644 index 0000000..5b39349 --- /dev/null +++ b/gradle/platform/settings.gradle.kts @@ -0,0 +1,25 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html + */ + +rootProject.name = "gradle-platform" + +dependencyResolutionManagement { + + // repositories { .. } + versionCatalogs { + create("libs").from("org.scijava:gradle-catalog") + + // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." +// create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) + } + + includeBuild("../catalog") +} + +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/playground/build.gradle.kts b/gradle/playground/build.gradle.kts new file mode 100644 index 0000000..a5cdfd0 --- /dev/null +++ b/gradle/playground/build.gradle.kts @@ -0,0 +1,228 @@ +plugins { + embeddedKotlin("jvm") +} + +repositories { + mavenCentral() + maven("https://maven.scijava.org/content/repositories/releases") + maven("https://maven.scijava.org/content/groups/public") +} + +//configurations.filter { it.isCanBeResolved }.map { println(it) } + +dependencies { + api(libs.imagej.ij) + + // Activate the "ScijavaCapability" rule +// components.all() +} + +open class ConflictCapability(val group: String, + val artifact: String = group, + val modules: List, + val reason: String? = null) { + val ga get() = "$group:$artifact" +} + +class ResolutionCapability(group: String, artifact: String = group, modules: List, reason: String? = null) : ConflictCapability(group, artifact, modules, reason) + +// the right module to select will be always the last in the list +val resolutions = listOf( + ResolutionCapability("jzy3d", "emul-gl", listOf("org.jzy3d:jzy3d-emul-gl", "org.jzy3d:jzy3d-emul-gl-awt"), "Replaced by org.jzy3d:jzy3d-emul-gl-awt"), + ResolutionCapability("jzy3d", "jGL", listOf("org.jzy3d:jGL", "jzy3d-jGL-awt"), "Replaced by org.jzy3d:jzy3d-jGL-awt"), + ResolutionCapability("javax", "transaction", listOf("javax.transaction:jta", "jzy3d-jGL-awt"), "Replaced by org.jzy3d:jzy3d-jGL-awt"), + ResolutionCapability("javax", "servlet", listOf("javax.servlet:servlet-api", "javax.servlet:javax.servlet-api"))) +val conflicts = listOf( + ConflictCapability("slf4j", modules = listOf("ch.qos.logback:logback-classic", "org.slf4j:slf4j-simple")), + ConflictCapability("jcl", modules = listOf("commons-logging:commons-logging", "org.slf4j:jcl-over-slf4j")), + ConflictCapability("jakarta", "activation", + listOf("jakarta.activation:jakarta.activation-api", "com.sun.activation:javax.activation", "javax.activation:activation"), + "See: https://wiki.eclipse.org/Jakarta_EE_Maven_Coordinates"), + ConflictCapability("javax" , "transaction", listOf("javax.transaction:javax.transaction-api", "javax.transaction:jta")), + ConflictCapability("apache", "commonsCsv", listOf("org.apache.commons:commons-csv", "org.apache.solr:solr-commons-csv")), + ConflictCapability("c3p0", modules = listOf("com.mchange:c3p0", "com.mchange:mchange-commons-java", "c3p0:c3p0")), + ConflictCapability("javax", "mail", listOf("javax.mail:mail", "com.sun.mail:javax.mail")), + ConflictCapability("jersey", "core", listOf("javax.ws.rs:javax.ws.rs-api", "com.sun.jersey:jersey-core")), + ConflictCapability("commons", "beanutils", listOf("commons-beanutils:commons-beanutils", "commons-collections:commons-collections", "commons-beanutils:commons-beanutils-core"))) + +// TODO + +// Uber-JAR of all batik components +// org.apache.xmlgraphics:batik-all + +// Conflicts with junit:junit. We don't need Android here. +// com.google.android.tools:dx + +// Brings in all gluegen-rt native classifiers. +// org.jogamp.gluegen:gluegen-rt-main + +// Brings in all jogl-all native classifiers. +// org.jogamp.jogl:jogl-all-main + +// Uber-JAR of all netty components +// io.netty:netty-all + +/* + org.jzy3d + jzy3d-native-jogl-awt + ${org.jzy3d.jzy3d-native-jogl-awt.version} + + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-linux-aarch64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-armv6hf + + + org.jogamp.gluegen + gluegen-rt-natives-linux-i586 + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-windows-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-windows-i586 + + + org.jogamp.jogl + jogl-all-natives-linux-aarch64 + + + org.jogamp.jogl + jogl-all-natives-linux-amd64 + + + org.jogamp.jogl + jogl-all-natives-linux-armv6hf + + + org.jogamp.jogl + jogl-all-natives-linux-i586 + + + org.jogamp.jogl + jogl-all-natives-macosx-universal + + + org.jogamp.jogl + jogl-all-natives-windows-amd64 + + + org.jogamp.jogl + jogl-all-natives-windows-i586 + + + + org.jzy3d + jzy3d-native-jogl-core + ${org.jzy3d.jzy3d-native-jogl-core.version} + + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-linux-aarch64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-linux-armv6hf + + + org.jogamp.gluegen + gluegen-rt-natives-linux-i586 + + + org.jogamp.gluegen + gluegen-rt-natives-macosx-universal + + + org.jogamp.gluegen + gluegen-rt-natives-windows-amd64 + + + org.jogamp.gluegen + gluegen-rt-natives-windows-i586 + + + org.jogamp.jogl + jogl-all-natives-linux-aarch64 + + + org.jogamp.jogl + jogl-all-natives-linux-amd64 + + + org.jogamp.jogl + jogl-all-natives-linux-armv6hf + + + org.jogamp.jogl + jogl-all-natives-linux-i586 + + + org.jogamp.jogl + jogl-all-natives-macosx-universal + + + org.jogamp.jogl + jogl-all-natives-windows-amd64 + + + org.jogamp.jogl + jogl-all-natives-windows-i586 + +*/ + +class ScijavaCapability : ComponentMetadataRule { + override + fun execute(context: ComponentMetadataContext) = context.details.run { + for (res in resolutions + conflicts) { + if (id.module.toString() in res.modules) + allVariants { + withCapabilities { + // Declare that all of them provide the same capability + addCapability(res.group, res.artifact, id.version) + } + } + } + } +} + +configurations.all { +// dependencies.forEach { it. } + resolutionStrategy.capabilitiesResolution { + for (res in resolutions) + withCapability(res.ga) { + for (cand in candidates) { + val id = cand.id + if (id is ModuleComponentIdentifier && id.moduleIdentifier.toString() == res.modules.last()) + select(cand) + } + res.reason?.let(::because) + } + } +} \ No newline at end of file diff --git a/gradle/playground/settings.gradle.kts b/gradle/playground/settings.gradle.kts new file mode 100644 index 0000000..de47784 --- /dev/null +++ b/gradle/playground/settings.gradle.kts @@ -0,0 +1,25 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html + */ + +rootProject.name = "gradle-playground" + +dependencyResolutionManagement { + + // repositories { .. } + versionCatalogs { + create("libs").from("org.scijava:gradle-catalog") + + // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." +// create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) + } + + includeBuild("../catalog") +} + +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/settings.gradle.kts b/gradle/settings.gradle.kts index d8d6285..5fa82c4 100644 --- a/gradle/settings.gradle.kts +++ b/gradle/settings.gradle.kts @@ -1,12 +1,10 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html - */ +// This is an empty umbrella build including all the component builds. +// This build is not necessarily needed. The component builds work independently. rootProject.name = "gradle" -include("platform") \ No newline at end of file +includeBuild("catalog") +includeBuild("platform") +includeBuild("playground") + +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file From 172c115e48d55bd0fe8c46c00472d872d0dd9683 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Thu, 14 Mar 2024 11:30:57 +0100 Subject: [PATCH 04/22] switch exclusions to `Rule`s, best efficiency --- gradle/catalog/build.gradle.kts | 9 +- gradle/platform/build.gradle.kts | 3 + .../src/main/kotlin/publish.gradle.kts | 4 - gradle/playground/build.gradle.kts | 259 ++++-------------- gradle/playground/settings.gradle.kts | 2 + 5 files changed, 65 insertions(+), 212 deletions(-) diff --git a/gradle/catalog/build.gradle.kts b/gradle/catalog/build.gradle.kts index 7cf6db1..66103ca 100644 --- a/gradle/catalog/build.gradle.kts +++ b/gradle/catalog/build.gradle.kts @@ -48,13 +48,20 @@ catalog.versionCatalog { else -> "$g.$camel" } - println("$alias($gav)") +// println("$alias($gav)") library(alias, gav) } for ((alias, aliases) in bundles) bundle(alias, aliases) + +// jakarta() } +//fun VersionCatalogBuilder.jakarta() { +// val bom = URL.of("https://repo1.maven.org/maven2/jakarta/platform/jakarta.jakartaee-bom/10.0.0/jakarta.jakartaee-bom-10.0.0.pom") +// library("jakarta.json", "jakarta.json:jakarta.json-api:") +//} + publishing.publications { repositories.maven { name = "sciJava" diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index 71e2a05..722bdc2 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -6,6 +6,8 @@ import org.gradle.internal.impldep.org.junit.experimental.categories.Categories. plugins { `java-platform` publish +// id("org.gradlex.java-ecosystem-capabilities-base") // only rules +// id("org.gradlex.logging-capabilities") // logging extension } group = "org.scijava" @@ -45,6 +47,7 @@ dependencies { // } api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) + api(platform("jakarta.platform:jakarta.jakartaee-bom:10.0.0")) // api(platform("com.google.api-client:google-api-client-bom:" + libs.com.google.api.client.googleApiClient.get().version)) // api(platform("com.google.api:gax-bom:" + libs.com.google.api.gax.get().version)) // api(platform("com.google.api:gapic-generator-java-bom:" + libs.com.google.api.grpc.protoGoogleCommonProtos.get().version)) diff --git a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts index 8dd418e..457bf5e 100644 --- a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts @@ -1,7 +1,3 @@ -import groovy.util.Node -import groovy.util.NodeList -import java.util.* - plugins { `maven-publish` } diff --git a/gradle/playground/build.gradle.kts b/gradle/playground/build.gradle.kts index a5cdfd0..8d9fdc2 100644 --- a/gradle/playground/build.gradle.kts +++ b/gradle/playground/build.gradle.kts @@ -1,5 +1,6 @@ plugins { embeddedKotlin("jvm") + id("org.gradlex.java-ecosystem-capabilities-base") } repositories { @@ -8,221 +9,65 @@ repositories { maven("https://maven.scijava.org/content/groups/public") } -//configurations.filter { it.isCanBeResolved }.map { println(it) } - -dependencies { - api(libs.imagej.ij) - - // Activate the "ScijavaCapability" rule -// components.all() +// it will appear as this was the original downloaded metadata of the dependency +// @CacheableRule is more verbose but more efficient, because the rule will be applied before the dependency get cached, +inline fun ComponentMetadataHandler.withModules(vararg modules: String) { + for (module in modules) withModule(module) } - -open class ConflictCapability(val group: String, - val artifact: String = group, - val modules: List, - val reason: String? = null) { - val ga get() = "$group:$artifact" +abstract class Rule : ComponentMetadataRule { + fun ComponentMetadataContext.remove(vararg modules: String) = details.allVariants { withDependencies { removeIf { it.module.toString() in modules } } } } +dependencies { + components { + @CacheableRule open class NoXalan : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove("xalan:serializer", "xalan:xalan") + } + withModules("org.openmicroscopy:ome-common", "ome:bio-formats-tools", "ome:formats-api", "ome:formats-bsd", + "org.apache.xmlgraphics:batik-bridge", "org.apache.xmlgraphics:batik-dom") -class ResolutionCapability(group: String, artifact: String = group, modules: List, reason: String? = null) : ConflictCapability(group, artifact, modules, reason) - -// the right module to select will be always the last in the list -val resolutions = listOf( - ResolutionCapability("jzy3d", "emul-gl", listOf("org.jzy3d:jzy3d-emul-gl", "org.jzy3d:jzy3d-emul-gl-awt"), "Replaced by org.jzy3d:jzy3d-emul-gl-awt"), - ResolutionCapability("jzy3d", "jGL", listOf("org.jzy3d:jGL", "jzy3d-jGL-awt"), "Replaced by org.jzy3d:jzy3d-jGL-awt"), - ResolutionCapability("javax", "transaction", listOf("javax.transaction:jta", "jzy3d-jGL-awt"), "Replaced by org.jzy3d:jzy3d-jGL-awt"), - ResolutionCapability("javax", "servlet", listOf("javax.servlet:servlet-api", "javax.servlet:javax.servlet-api"))) -val conflicts = listOf( - ConflictCapability("slf4j", modules = listOf("ch.qos.logback:logback-classic", "org.slf4j:slf4j-simple")), - ConflictCapability("jcl", modules = listOf("commons-logging:commons-logging", "org.slf4j:jcl-over-slf4j")), - ConflictCapability("jakarta", "activation", - listOf("jakarta.activation:jakarta.activation-api", "com.sun.activation:javax.activation", "javax.activation:activation"), - "See: https://wiki.eclipse.org/Jakarta_EE_Maven_Coordinates"), - ConflictCapability("javax" , "transaction", listOf("javax.transaction:javax.transaction-api", "javax.transaction:jta")), - ConflictCapability("apache", "commonsCsv", listOf("org.apache.commons:commons-csv", "org.apache.solr:solr-commons-csv")), - ConflictCapability("c3p0", modules = listOf("com.mchange:c3p0", "com.mchange:mchange-commons-java", "c3p0:c3p0")), - ConflictCapability("javax", "mail", listOf("javax.mail:mail", "com.sun.mail:javax.mail")), - ConflictCapability("jersey", "core", listOf("javax.ws.rs:javax.ws.rs-api", "com.sun.jersey:jersey-core")), - ConflictCapability("commons", "beanutils", listOf("commons-beanutils:commons-beanutils", "commons-collections:commons-collections", "commons-beanutils:commons-beanutils-core"))) - -// TODO - -// Uber-JAR of all batik components -// org.apache.xmlgraphics:batik-all - -// Conflicts with junit:junit. We don't need Android here. -// com.google.android.tools:dx - -// Brings in all gluegen-rt native classifiers. -// org.jogamp.gluegen:gluegen-rt-main - -// Brings in all jogl-all native classifiers. -// org.jogamp.jogl:jogl-all-main - -// Uber-JAR of all netty components -// io.netty:netty-all - -/* - org.jzy3d - jzy3d-native-jogl-awt - ${org.jzy3d.jzy3d-native-jogl-awt.version} - - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt-natives-linux-i586 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-windows-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-windows-i586 - - - org.jogamp.jogl - jogl-all-natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-natives-linux-i586 - - - org.jogamp.jogl - jogl-all-natives-macosx-universal - - - org.jogamp.jogl - jogl-all-natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-natives-windows-i586 - + @CacheableRule open class NoUeberJars : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove("org.apache.xmlgraphics:batik-all", "it.unimi.dsi:fastutil") + } + withModules("org.openmicroscopy:omero-blitz", "org.openmicroscopy:omero-server") + @CacheableRule open class NoAndroid : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove("com.google.android.tools:dx") + } + withModules("net.clearcontrol:coremem", "com.nativelibs4java:bridj") - org.jzy3d - jzy3d-native-jogl-core - ${org.jzy3d.jzy3d-native-jogl-core.version} - - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt-natives-linux-i586 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-windows-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-windows-i586 - - - org.jogamp.jogl - jogl-all-natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-natives-linux-i586 - - - org.jogamp.jogl - jogl-all-natives-macosx-universal - - - org.jogamp.jogl - jogl-all-natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-natives-windows-i586 - -*/ + @CacheableRule open class ClearGl : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove("org.jogamp.gluegen:gluegen-rt-main", "org.jogamp.jogl:jogl-all-main") + } + withModule("net.clearvolume:cleargl") -class ScijavaCapability : ComponentMetadataRule { - override - fun execute(context: ComponentMetadataContext) = context.details.run { - for (res in resolutions + conflicts) { - if (id.module.toString() in res.modules) - allVariants { - withCapabilities { - // Declare that all of them provide the same capability - addCapability(res.group, res.artifact, id.version) - } - } + @CacheableRule open class SparkCore211 : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove("io.netty:netty-all") } - } -} + withModule("org.apache.spark:spark-core_2.11") -configurations.all { -// dependencies.forEach { it. } - resolutionStrategy.capabilitiesResolution { - for (res in resolutions) - withCapability(res.ga) { - for (cand in candidates) { - val id = cand.id - if (id is ModuleComponentIdentifier && id.moduleIdentifier.toString() == res.modules.last()) - select(cand) - } - res.reason?.let(::because) + @CacheableRule open class NoBatikExtensions : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove("org.apache.xmlgraphics:batik-extensions") + } + withModules("org.apache.xmlgraphics:batik-rasterizer-ext", "org.apache.xmlgraphics:batik-squiggle-ext") + + @CacheableRule open class NoJogampNatives : Rule() { + override fun execute(context: ComponentMetadataContext) { + // Conflicts with properly packaged jogamp native classifiers. + val libs = listOf("gluegen:gluegen-rt", "jogl:jogl-all") + val modules = listOf("linux-aarch64", "linux-amd64", "linux-armv6hf", "linux-i586", "macosx-universal", "windows-amd64", "windows-i586") + .flatMap { p -> libs.map { "org.jogamp.$it-natives-$p" } }.toTypedArray() + context.remove(*modules) } + } + withModules("org.jzy3d:jzy3d-native-jogl-awt", "org.jzy3d:jzy3d-native-jogl-core") + + @CacheableRule open class Weka : Rule() { + override fun execute(context: ComponentMetadataContext) = context.remove( + "com.github.fommil.netlib:all", "com.googlecode.netlib-java:netlib-java", "net.sourceforge.f2j:arpack_combined_all", + "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b", "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime") + } + withModule("nz.ac.waikato.cms.weka:weka-dev") } + implementation(libs.org.morphonets.snt) + implementation("org.jzy3d:jzy3d-emul-gl-awt:2.1.0") } \ No newline at end of file diff --git a/gradle/playground/settings.gradle.kts b/gradle/playground/settings.gradle.kts index de47784..6c09f84 100644 --- a/gradle/playground/settings.gradle.kts +++ b/gradle/playground/settings.gradle.kts @@ -20,6 +20,8 @@ dependencyResolutionManagement { } includeBuild("../catalog") + // java-ecosystem-capabilities + includeBuild("../../../java-ecosystem-capabilities") } enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file From 2653c2cd723c2466d6a0ccf89811ca8f96453bed Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Mon, 18 Mar 2024 03:54:16 +0100 Subject: [PATCH 05/22] shelve --- gradle/catalog/build.gradle.kts | 39 ++++++++----- gradle/enforcer/settings.gradle.kts | 9 +++ gradle/platform/build.gradle.kts | 15 ++--- .../src/main/kotlin/publish.gradle.kts | 6 ++ gradle/platform/settings.gradle.kts | 2 + gradle/playground/build.gradle.kts | 58 +++++++++++++++++-- gradle/playground/settings.gradle.kts | 10 +++- gradle/settings.gradle.kts | 1 + 8 files changed, 110 insertions(+), 30 deletions(-) create mode 100644 gradle/enforcer/settings.gradle.kts diff --git a/gradle/catalog/build.gradle.kts b/gradle/catalog/build.gradle.kts index 66103ca..0fe05f5 100644 --- a/gradle/catalog/build.gradle.kts +++ b/gradle/catalog/build.gradle.kts @@ -8,7 +8,7 @@ plugins { } group = "org.scijava" -version = "0.1" +version = "0.11" catalog.versionCatalog { @@ -36,11 +36,14 @@ catalog.versionCatalog { .joinToString("") { if (it.isEmpty()) "" else it[0].uppercase() + it.substring(1).lowercase() } .replaceFirstChar { it.lowercase() } - fun getAlias(group: String = "$g".substringAfterLast('.')) = - "$group." + when { + fun getAlias(group: String = "$g".substringAfterLast('.')): String { + val alias = "$group." + when { camel.startsWith(group) -> camel.substringAfter(group).replaceFirstChar { it.lowercase() }.ifEmpty { group } else -> camel - }.also { bundles.getOrPut(group, ::ArrayList) += it } + } + bundles.getOrPut(group, ::ArrayList) += alias + return alias + } val alias = when ("$g") { in listOf("org.scijava", "net.imagej", "net.imglib2", "sc.fiji", "org.janelia.saalfeldlab") -> getAlias() @@ -48,13 +51,17 @@ catalog.versionCatalog { else -> "$g.$camel" } -// println("$alias($gav)") + // println("$alias($gav)") library(alias, gav) } + for ((alias, aliases) in bundles) bundle(alias, aliases) -// jakarta() + // jakarta() + + // version("groovy", "3.0.5") + // library("groovy-core", "org.codehaus.groovy", "groovy").versionRef("groovy") } //fun VersionCatalogBuilder.jakarta() { @@ -62,13 +69,17 @@ catalog.versionCatalog { // library("jakarta.json", "jakarta.json:jakarta.json-api:") //} -publishing.publications { - repositories.maven { - name = "sciJava" - credentials(PasswordCredentials::class) - url = uri("https://maven.scijava.org/content/repositories/releases") - } - create("sciJavaCatalog") { - from(components["versionCatalog"]) +publishing { + publications { + repositories { + maven { + name = "sciJava" + credentials(PasswordCredentials::class) + url = uri("https://maven.scijava.org/content/repositories/releases") + } + } + create("sciJavaCatalog") { + from(components["versionCatalog"]) + } } } \ No newline at end of file diff --git a/gradle/enforcer/settings.gradle.kts b/gradle/enforcer/settings.gradle.kts new file mode 100644 index 0000000..562e10e --- /dev/null +++ b/gradle/enforcer/settings.gradle.kts @@ -0,0 +1,9 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.6/userguide/multi_project_builds.html in the Gradle documentation. + * This project uses @Incubating APIs which are subject to change. + */ + +rootProject.name = "gradle-enforcer" diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index 722bdc2..8f58774 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -11,7 +11,7 @@ plugins { } group = "org.scijava" -version = "0.1" //(effXml / "version").toString() +version = "0.13" //(effXml / "version").toString() operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult @@ -39,13 +39,14 @@ dependencies { // println("$g:$a:$v") } } - // versionCatalogs.forEach { versionCatalog -> - // println("catalog ${versionCatalog.name}") - // versionCatalog.libraryAliases.forEach { - // println(versionCatalog.findLibrary(it).get().get()) - // } - // } +// versionCatalogs.forEach { versionCatalog -> +// println("catalog ${versionCatalog.name}") +// versionCatalog.libraryAliases.forEach { +// println(versionCatalog.findLibrary(it).get().get()) +// } +// } +// println(libs.groovy.core.get()) api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) api(platform("jakarta.platform:jakarta.jakartaee-bom:10.0.0")) // api(platform("com.google.api-client:google-api-client-bom:" + libs.com.google.api.client.googleApiClient.get().version)) diff --git a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts index 457bf5e..1ae16b3 100644 --- a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts @@ -13,6 +13,12 @@ publishing { } create("sciJavaPlatform") { from(components["javaPlatform"]) + groupId = "org.scijava" + println(groupId) + artifactId = "gradle-platform" + println(artifactId) + version = "0.13" + println(version) /*pom.withXml { val nodes = Stack() diff --git a/gradle/platform/settings.gradle.kts b/gradle/platform/settings.gradle.kts index 5b39349..162f20a 100644 --- a/gradle/platform/settings.gradle.kts +++ b/gradle/platform/settings.gradle.kts @@ -14,6 +14,8 @@ dependencyResolutionManagement { // repositories { .. } versionCatalogs { create("libs").from("org.scijava:gradle-catalog") +// maybeCreate("libs").version("groovy", "3.0.9") +// maybeCreate("libs").library("groovy-core", "org.codehaus.groovy:groovy:2.4.15") // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." // create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) diff --git a/gradle/playground/build.gradle.kts b/gradle/playground/build.gradle.kts index 8d9fdc2..b40c122 100644 --- a/gradle/playground/build.gradle.kts +++ b/gradle/playground/build.gradle.kts @@ -1,6 +1,11 @@ +import org.gradle.api.publish.maven.internal.publication.DefaultMavenPom + plugins { embeddedKotlin("jvm") - id("org.gradlex.java-ecosystem-capabilities-base") + id("org.gradlex.java-ecosystem-capabilities") version "1.5.2.00" + id("dev.jacomet.logging-capabilities") version "0.11.1" + id("io.fuchs.gradle.classpath-collision-detector") version "0.3" + `maven-publish` } repositories { @@ -9,11 +14,13 @@ repositories { maven("https://maven.scijava.org/content/groups/public") } -// it will appear as this was the original downloaded metadata of the dependency -// @CacheableRule is more verbose but more efficient, because the rule will be applied before the dependency get cached, +// @CacheableRule is more verbose but more efficient, because the rule will be applied before the dependency get cached +// in Gradle, it will appear as this was the original downloaded metadata of the given dependency + inline fun ComponentMetadataHandler.withModules(vararg modules: String) { for (module in modules) withModule(module) } + abstract class Rule : ComponentMetadataRule { fun ComponentMetadataContext.remove(vararg modules: String) = details.allVariants { withDependencies { removeIf { it.module.toString() in modules } } } } @@ -62,12 +69,51 @@ dependencies { withModules("org.jzy3d:jzy3d-native-jogl-awt", "org.jzy3d:jzy3d-native-jogl-core") @CacheableRule open class Weka : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove( + val exclusions = listOf( "com.github.fommil.netlib:all", "com.googlecode.netlib-java:netlib-java", "net.sourceforge.f2j:arpack_combined_all", "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b", "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime") + + override fun execute(context: ComponentMetadataContext) { + context.details.allVariants { + withDependencies { + removeIf { it.module.toString() in exclusions } + add("runtimeClasspath", "com.github.vbmacher:java-cup-runtime") + } + } + } } withModule("nz.ac.waikato.cms.weka:weka-dev") } - implementation(libs.org.morphonets.snt) - implementation("org.jzy3d:jzy3d-emul-gl-awt:2.1.0") + // implementation("org.jzy3d:jzy3d-emul-gl:+") + // implementation("org.jzy3d:jzy3d-emul-gl-awt:+") + + implementation("junit:junit:4.4") + // implementation("org.hamcrest:hamcrest-core:1.2") +} + +tasks.detectCollisions { + // detectCollisions() // to detect on configuration time + // configurations.from(project.configurations.testRuntimeClasspath) +} + +publishing { + publications.register("maven") { + pom { + this as DefaultMavenPom + println(name.orNull) + println(licenses) + this.licenses { + license { + this.name = "Nich" + url = "URL" + comments = "com" + distribution = "dis" + } + } + println(licenses[0].name.orNull) + println(licenses[0].url.orNull) + println(licenses[0].comments.orNull) + println(licenses[0].distribution.orNull) + } + } } \ No newline at end of file diff --git a/gradle/playground/settings.gradle.kts b/gradle/playground/settings.gradle.kts index 6c09f84..b4fc304 100644 --- a/gradle/playground/settings.gradle.kts +++ b/gradle/playground/settings.gradle.kts @@ -9,6 +9,11 @@ rootProject.name = "gradle-playground" +pluginManagement.repositories { + gradlePluginPortal() + maven("https://maven.scijava.org/content/repositories/releases") +} + dependencyResolutionManagement { // repositories { .. } @@ -16,12 +21,11 @@ dependencyResolutionManagement { create("libs").from("org.scijava:gradle-catalog") // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." -// create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) + // create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) } includeBuild("../catalog") - // java-ecosystem-capabilities - includeBuild("../../../java-ecosystem-capabilities") + // includeBuild("../../../java-ecosystem-capabilities") } enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/settings.gradle.kts b/gradle/settings.gradle.kts index 5fa82c4..6a0ad4b 100644 --- a/gradle/settings.gradle.kts +++ b/gradle/settings.gradle.kts @@ -6,5 +6,6 @@ rootProject.name = "gradle" includeBuild("catalog") includeBuild("platform") includeBuild("playground") +includeBuild("enforcer") enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file From 1af66bfea22f123befefb064a152af20f6028413 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Thu, 25 Apr 2024 11:44:04 +0200 Subject: [PATCH 06/22] catalog and platform properly generated and the corresponding artifacts get added alongside the main publication --- .idea/.gitignore | 8 + .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/compiler.xml | 36 + .idea/encodings.xml | 7 + .idea/gradle.xml | 42 + .idea/jarRepositories.xml | 35 + .idea/kotlinc.xml | 6 + .idea/misc.xml | 16 + .idea/modules.xml | 10 + .idea/vcs.xml | 6 + gradle/catalog/build.gradle.kts | 121 +- gradle/catalog/eff.xml | 6379 ----------------- .../catalog/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43462 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + gradle/catalog/gradlew | 249 + gradle/catalog/gradlew.bat | 92 + gradle/enforcer/.gitattributes | 9 + gradle/enforcer/.gitignore | 5 + gradle/enforcer/build.gradle.kts | 63 + gradle/enforcer/gradle.properties | 6 + gradle/enforcer/gradle/libs.versions.toml | 5 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43462 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + gradle/enforcer/gradlew | 249 + gradle/enforcer/gradlew.bat | 92 + .../example/EnforcerPluginFunctionalTest.kt | 43 + .../main/kotlin/org/example/EnforcerPlugin.kt | 22 + .../kotlin/org/example/EnforcerPluginTest.kt | 22 + gradle/gradle.properties | 6 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- gradle/manifest-dependencies/build.gradle.kts | 65 + .../manifest-dependencies/settings.gradle.kts | 10 + .../example/GradleBasePluginFunctionalTest.kt | 43 + .../kotlin/org/example/GradleBasePlugin.kt | 37 + .../org/example/GradleBasePluginTest.kt | 22 + gradle/platform/build.gradle.kts | 81 +- .../src/main/kotlin/publish.gradle.kts | 8 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43462 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + gradle/platform/gradlew | 249 + gradle/platform/gradlew.bat | 92 + gradle/platform/settings.gradle.kts | 7 +- gradle/settings.gradle.kts | 5 +- pom.xml | 84 + 44 files changed, 1785 insertions(+), 6475 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/kotlinc.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml delete mode 100644 gradle/catalog/eff.xml create mode 100644 gradle/catalog/gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/catalog/gradle/wrapper/gradle-wrapper.properties create mode 100755 gradle/catalog/gradlew create mode 100644 gradle/catalog/gradlew.bat create mode 100644 gradle/enforcer/.gitattributes create mode 100644 gradle/enforcer/.gitignore create mode 100644 gradle/enforcer/build.gradle.kts create mode 100644 gradle/enforcer/gradle.properties create mode 100644 gradle/enforcer/gradle/libs.versions.toml create mode 100644 gradle/enforcer/gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/enforcer/gradle/wrapper/gradle-wrapper.properties create mode 100755 gradle/enforcer/gradlew create mode 100644 gradle/enforcer/gradlew.bat create mode 100644 gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt create mode 100644 gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt create mode 100644 gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt create mode 100644 gradle/gradle.properties create mode 100644 gradle/manifest-dependencies/build.gradle.kts create mode 100644 gradle/manifest-dependencies/settings.gradle.kts create mode 100644 gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt create mode 100644 gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt create mode 100644 gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt create mode 100644 gradle/platform/gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/platform/gradle/wrapper/gradle-wrapper.properties create mode 100755 gradle/platform/gradlew create mode 100644 gradle/platform/gradlew.bat diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..34d4935 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..f2b130e --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,42 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..24f14f0 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..8d81632 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a4e60c8 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c010932 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/gradle/catalog/build.gradle.kts b/gradle/catalog/build.gradle.kts index 0fe05f5..0c8dd02 100644 --- a/gradle/catalog/build.gradle.kts +++ b/gradle/catalog/build.gradle.kts @@ -1,6 +1,7 @@ import groovy.xml.XmlSlurper import groovy.xml.slurpersupport.GPathResult import groovy.xml.slurpersupport.NodeChild +import java.io.ByteArrayOutputStream plugins { `version-catalog` @@ -10,76 +11,82 @@ plugins { group = "org.scijava" version = "0.11" -catalog.versionCatalog { - - operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult - - val effXml = XmlSlurper().parse(projectDir.resolve("eff.xml")) - val deps = effXml / "dependencyManagement" / "dependencies" - val bundles = mutableMapOf>() - val skip = listOf("mpicbg" to "mpicbg_") - val cache = mutableSetOf() // skip duplicates, such as org.bytedeco:ffmpeg - for (dep in deps.children()) { - val node = dep as NodeChild - val g = node / "groupId" - val a = node / "artifactId" - val v = node / "version" - val gav = "$g:$a:$v" - - if (("$g" to "$a") in skip || gav in cache) - continue - - cache += gav - - // println(gav) - val camel = "$a".split('-', '_') - .joinToString("") { if (it.isEmpty()) "" else it[0].uppercase() + it.substring(1).lowercase() } - .replaceFirstChar { it.lowercase() } - - fun getAlias(group: String = "$g".substringAfterLast('.')): String { - val alias = "$group." + when { - camel.startsWith(group) -> camel.substringAfter(group).replaceFirstChar { it.lowercase() }.ifEmpty { group } - else -> camel +tasks { + + val generateCatalog by register("generateCatalog") { + + workingDir = projectDir.parentFile.parentFile + commandLine("sh", "-c", "mvn -B -f pom.xml help:effective-pom") + standardOutput = ByteArrayOutputStream() + + doLast { + var output = standardOutput.toString() + // clean output from dirty + output = output.substringAfter("\n\n").substringBefore("\n\n") + + catalog.versionCatalog { + + operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult + + val xml = XmlSlurper().parseText(output) + val deps = xml / "dependencyManagement" / "dependencies" + val bundles = mutableMapOf>() + val skip = listOf("mpicbg" to "mpicbg_") + val cache = mutableSetOf() // skip duplicates, such as org.bytedeco:ffmpeg + for (dep in deps.children()) { + val node = dep as NodeChild + val g = node / "groupId" + val a = node / "artifactId" + val v = node / "version" + val gav = "$g:$a:$v" + + if (("$g" to "$a") in skip || gav in cache) + continue + + cache += gav + + val camel = "$a".split('-', '_') + .joinToString("") { if (it.isEmpty()) "" else it[0].uppercase() + it.substring(1).lowercase() } + .replaceFirstChar { it.lowercase() } + + fun getAlias(group: String): String { + val alias = "$group." + when { + camel.startsWith(group) -> camel.substringAfter(group).replaceFirstChar { it.lowercase() }.ifEmpty { group } + else -> camel + } + bundles.getOrPut(group, ::ArrayList) += alias + return alias + } + + val lastWordAsGroup = listOf("org.scijava", "net.imagej", "net.imglib2", "sc.fiji", "org.janelia.saalfeldlab") + val alias = when ("$g") { + in lastWordAsGroup -> getAlias(g.toString().substringAfterLast('.')) + "io.scif" -> getAlias("scifio") + else -> "$g.$camel" + } + + library(alias, gav) + } + + for ((alias, aliases) in bundles) + bundle(alias, aliases) } - bundles.getOrPut(group, ::ArrayList) += alias - return alias - } - - val alias = when ("$g") { - in listOf("org.scijava", "net.imagej", "net.imglib2", "sc.fiji", "org.janelia.saalfeldlab") -> getAlias() - "io.scif" -> getAlias("scifio") - else -> "$g.$camel" } - - // println("$alias($gav)") - library(alias, gav) } - - for ((alias, aliases) in bundles) - bundle(alias, aliases) - - // jakarta() - - // version("groovy", "3.0.5") - // library("groovy-core", "org.codehaus.groovy", "groovy").versionRef("groovy") + // dependsOn runs only if the src is successful, finalizedBy not + generateCatalogAsToml { dependsOn(generateCatalog) } } -//fun VersionCatalogBuilder.jakarta() { -// val bom = URL.of("https://repo1.maven.org/maven2/jakarta/platform/jakarta.jakartaee-bom/10.0.0/jakarta.jakartaee-bom-10.0.0.pom") -// library("jakarta.json", "jakarta.json:jakarta.json-api:") -//} - publishing { publications { + create("sciJavaCatalog") { from(components["versionCatalog"]) } repositories { maven { name = "sciJava" credentials(PasswordCredentials::class) url = uri("https://maven.scijava.org/content/repositories/releases") + // url = uri("repo") } } - create("sciJavaCatalog") { - from(components["versionCatalog"]) - } } } \ No newline at end of file diff --git a/gradle/catalog/eff.xml b/gradle/catalog/eff.xml deleted file mode 100644 index 1bb3642..0000000 --- a/gradle/catalog/eff.xml +++ /dev/null @@ -1,6379 +0,0 @@ - - - - - - - - - - - - - - - 4.0.0 - - org.scijava - pom-scijava-base - 19.0.0 - - - org.scijava - pom-scijava - 38.0.0-SNAPSHOT - pom - SciJava Parent POM - This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. - https://scijava.org/ - 2011 - - SciJava - https://scijava.org/ - - - - Unlicense - https://unlicense.org/ - repo - - - - - ctrueden - Curtis Rueden - https://imagej.net/people/ctrueden - - founder - lead - developer - debugger - reviewer - support - maintainer - - - - - - Mark Hiner - https://imagej.net/people/hinerm - - hinerm - - - - Johannes Schindelin - https://imagej.net/people/dscho - - dscho - - - - Sébastien Besson - https://imagej.net/people/sbesson - - sbesson - - - - John Bogovic - https://imagej.net/people/bogovicj - - bogovicj - - - - Nicolas Chiaruttini - https://imagej.net/people/NicoKiaru - - NicoKiaru - - - - Barry DeZonia - https://imagej.net/people/bdezonia - - bdezonia - - - - Richard Domander - https://imagej.net/people/rimadoma - - rimadoma - - - - Karl Duderstadt - https://imagej.net/people/karlduderstadt - - karlduderstadt - - - - Jan Eglinger - https://imagej.net/people/imagejan - - imagejan - - - - Gabriel Einsdorf - https://imagej.net/people/gab1one - - gab1one - - - - Tiago Ferreira - https://imagej.net/people/tferr - - tferr - - - - David Gault - - dgault - - - - Ulrik Günther - https://imagej.net/people/skalarproduktraum - - skalarproduktraum - - - - Philipp Hanslovsky - https://imagej.net/people/hanslovsky - - hanslovsky - - - - Stefan Helfrich - https://imagej.net/people/stelfrich - - stelfrich - - - - Cameron Lloyd - https://imagej.net/people/camlloyd - - camlloyd - - - - Hadrien Mary - https://imagej.net/people/hadim - - hadim - - - - Tobias Pietzsch - https://imagej.net/people/tpietzsch - - tpietzsch - - - - Stephan Preibisch - https://imagej.net/people/StephanPreibisch - - StephanPreibisch - - - - Stephan Saalfeld - https://imagej.net/people/axtimwalde - - axtimwalde - - - - Deborah Schmidt - https://imagej.net/people/frauzufall - - frauzufall - - - - Lorenzo Scianatico - https://imagej.net/people/LoreScianatico - - LoreScianatico - - - - Jean-Yves Tinevez - https://imagej.net/people/tinevez - - tinevez - - - - Christian Tischer - https://imagej.net/people/tischi - - tischi - - - - Gabriella Turek - https://imagej.net/people/turekg - - turekg - - - - - - SciJava - https://groups.google.com/group/scijava - https://groups.google.com/group/scijava - scijava@googlegroups.com - https://groups.google.com/group/scijava - - - - scm:git:https://github.com/scijava/pom-scijava - scm:git:git@github.com:scijava/pom-scijava - https://github.com/scijava/pom-scijava - - - GitHub Issues - https://github.com/scijava/pom-scijava/issues - - - GitHub Actions - https://github.com/scijava/pom-scijava/actions - - - 3.4.2 - 3.4.2 - 2.0.1 - 0.5.4 - 2.0.2 - 2.0.2 - 1.11.0 - 1.18.0 - 3.0.1 - 3.0.1 - 1.2.10 - 2.1.1 - 2.0.2 - 2.0.1 - 3.0.0 - 3.0.6 - 2.0.7 - 2.5.0 - 3.0.3 - 2.1.0 - 2.1.0 - 1.0.6 - 2.1.8 - 2.1.2 - 2.1.2 - 2.3.0 - 2.3.0 - 2.0.4 - 2.0.3 - 2.0.1 - 2.0.8 - 2.1.1 - 3.1.3 - 2.0.1 - 2.0.1 - 2.0.1 - 1.0.2 - 2.3.5 - 1.1.5 - 1.1.1 - 2.0.2 - 2.0.1 - 4.2.2 - 4.2.2 - 2.0.2 - 3.0.1 - 3.0.1 - 2.0.1 - 2.0.0 - 2.0.1 - 3.0.0 - 4.1.2 - 4.1.2 - 2.0.2 - 2.0.1 - 5.0.0 - 5.0.0 - 2.0.1 - 2.0.1 - 2.0.1 - 7.1.1 - 2.1.1 - 1.6.2 - 1.6.2 - 3.0.1 - 2.0.0 - 2.0.0 - 1.1.2 - 1.1.2 - 2.0.2 - 2.0.2 - 2.0.5 - 4.2.1 - 2.0.2 - 5.0.25 - 4.3.4 - 2.0.3 - 2.0.3 - 2.0.1 - 3.1.10 - 1.0.5 - 2.1.1 - 2.1.1 - 2.0.2 - 2.0.2 - 2.1.2 - 2.0.1 - 3.1.9 - 3.1.9 - 1.7-fiji4 - 1.1.4 - 1.1.4 - 2.0.1 - 2.1.1 - 2.1.0 - 25.0.2 - 25.0.2 - 2.0.1 - 2.0.1 - 3.1.4 - 0.1.2 - 1.2.5 - 1.4.0 - 1.2.1 - 3.2.0 - 2.0.1 - 1.2.1 - 1.3.1 - 7.11.1 - 3.3.4 - 1.3.10 - 1.3.10 - 2.0.4 - 2.2.0 - 3.0.4 - 3.0.4 - 2.0.3 - 1.0.3 - 2.0.3 - 2.0.1 - 2.5.0 - 2.5.0 - 2.0.3 - 2.01.4 - <_3D_Blob_Segmentation.version>3.0.2 - <_3D_Objects_Counter.version>2.0.1 - <_3D_Viewer.version>4.0.5 - 1.2.7 - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - 1.10.14 - 1.10.14 - 3.5.3 - 2.7.7 - 3.5.3 - 2.7.7 - 3.5.3 - 4.11.1 - 4.11.1 - 2.26.0 - 2.33 - 2.33 - 9.6 - 9.6 - 9.6 - 9.6 - 9.6 - 1.10.4 - 1.10.4 - 3.3.1 - ${package-guess} - 1.12.667 - 1.12.667 - 1.12.667 - 2.6.13 - 2.6.13 - 0.4.2 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 10.4.13 - 3.1.2 - 1.0.0-beta-34 - 6.2.4 - 9.1.0 - 9.1.0 - 1.0.0 - 7.2.0 - 7.2.0 - 7.2.0 - 2.1.4 - 2.1.4 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 0.7.0 - 3.5.0 - 3.2.0 - 2.0.SP1 - 3.3.0 - 3.3.0 - 1.2.12 - 1.2.12 - 1.2.25 - 3.42.0 - 19.04.1 - 2.2.10 - 2.5.0.1 - 1.8.1.1 - 2.3.0.4 - 2.5.1.4 - 2.5.3.1 - 1.9.0.1 - 0.32.1.1 - 0.32.2.0 - 2.7 - 1.12.667 - 1.12.667 - 5.6.0 - 1.3.1 - 1.11.9 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 3.3.1 - 3.3.0 - 3.4.0 - 2.304 - 3.4 - 1.3.13 - 0.10.4 - 2.2.16 - 3.1.19 - 1.5.5-11 - 0.12.0 - 4.2.2 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.26.0 - 2.43.0 - 2.43.0 - 2.43.0 - 2.34.0 - 1.29.0 - 1.23.0 - 1.23.0 - 1.23.0 - 1.10.4 - 1.10.4 - 2.33.0 - 2.33.0 - 0.127.13 - 1.38.0 - 2.34.0 - 2.10.1 - 2.25.0 - 33.0.0-jre - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 2.8 - 3.23.0 - 3.23.0 - 3.23.0 - 1.7 - 5.5.13.3 - 0.1.55 - 1.1.3 - 5.3 - 5.3 - 5.3 - 0.7.0 - 5.9 - 4.12.0 - 3.8.0 - 1.1.3 - 3.6.5 - 3.6.5 - 1.9.4 - 1.9.4 - 1.6.0 - 1.6.0 - 1.16.1 - 1.16.1 - 3.2.2 - 3.2.2 - 4.4 - 1.26.0 - 1.10.0 - 2.15.1 - 2.15.1 - 2.6 - 2.6 - 3.14.0 - 1.3.0 - 1.3.0 - 3.6.1 - 2.12.0 - 1.11.0 - 0.4.8 - 26 - 26 - 1.9.10 - 11.1.0 - 11.1.0 - 11.1.0 - 11.1.0 - 4.3 - 20151125 - 0.41 - 2.25.0 - 2.25.0 - 3.2.0 - - 0.12.0 - 1.7.0 - 6.1.1-1.5.10 - 2.1.3 - 2.15.0 - 2.304 - 3.4 - 7.2.0 - 7.2.0 - 7.2.0 - 2.23.0 - 1.6.2 - 2.43.0 - 2.43.0 - 2.43.0 - 3.6.5 - 2.5.0 - 2.5.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 1.23.0 - 1.23.0 - 1.23.0 - 1.23.0 - 2.33.0 - 2.33.0 - 0.127.13 - 1.38.0 - 2.34.0 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.0.3 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 1.5 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 1.62.2 - 1.62.2 - 2.10.1 - 33.0.0-jre - 1.14.3-1.5.10 - 1.8.0.10 - 1.8.0.10 - 4.5.14 - 4.4.16 - 4.5.14 - 0.3.0 - 0.3.0 - 3.6.5 - 1.54h - 1.2.6 - 2.0.4 - 0.2.0 - 6.0.2 - 1.2.1 - 0.7.5 - 0.1.2 - 0.8.1 - 0.7.1 - 1.0.0-5.6 - 1.0.0-5.6 - 0.1.3 - 2.0.0 - 0.1.1 - 0.8.1 - 0.3.1 - 0.3.2 - 0.3.3 - 0.8.4 - 0.2.0 - 1.1.7 - 0.3.1 - 1.0.1 - 1.0.1 - 2.15.0 - 1.54h - 2.15.0 - 0.2.1 - 0.3.1 - 0.14.0 - 1.0.0-beta-17 - 2.0.1 - 2.0.0 - 0.12.0 - 4.0.1 - 0.14.1 - 1.0.0 - 6.3.0 - 1.9.0 - 4.7.5 - 1.62.2 - 0.3.0 - 4.1.1 - 0.6.1 - 0.2.2 - 1.1.1 - 0.3.1 - 0.9.0 - 0.17.1 - 0.46.0 - 5.5.13.3 - 2.5.2 - 2.8 - 1.6.0-scijava-2 - 1.6.0-scijava-2 - 2.21.22 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 0.8.11 - 1.1.3 - 1.1.3 - 1.1.3 - 1.0.3 - 1.7.2 - 1.7.2 - 1.6.0-scijava-2 - 1.5.10 - 1.5.10 - - - 8.8.3 - 3.30.2-GA - 2.0.SP1 - 1.1.3 - 1.0.1 - 1.7.36 - 1.0.58 - 2.0.6.1 - 2.4.2 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 1.3.13 - 1.5.4 - 3.4.3 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 4.2.2 - 19.04.1 - 0.14 - 3.0.4 - 3.0.4 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 2.14.6 - 2.14.6 - 2.14.6 - 3.25.1 - 1.37 - 1.37 - 1.37 - 1.49 - 5.14.0 - 5.14.0 - 0.10.4 - 2.2.16 - 3.1.19 - 2.5.0 - 2.0.5 - 2.12.7 - 2.12.7 - 1.7.2 - 2.5.0 - 2.5.0 - 2.5.0 - 1.10.5 - 2.2.1 - 2.80b11 - 2.80b11 - 0.2.1 - 0.1.55 - 1.4 - 20240205 - 0.7.4-scijava - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 4.13.2 - 4.13.2 - 0.2.4 - 0.2.4 - 2.7.3 - 2.7.3 - 1.1.3 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.8.0 - 1.8.0 - 1.8.0 - 5.6.0 - 0.1.17 - 0.3.11 - 3.3.0 - 1.1.10 - 1.84.1-1.5.10 - 1.0.2 - 1.12.0 - 1.12.0 - 1.12.0 - 2.4.0 - N/A - **/script_templates/** - N/A - This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. - 2.20.0 - 2.20.0 - 2.20.0 - 1.2.12 - 1.2.12 - 1.2.12 - 1.8.0 - - 3.1.0 - 3.1.0 - 0.13.1 - 3.6.0 - 3.3.2 - 3.3.2 - 3.8.1 - 3.9.6 - 3.6.1 - 3.1.1 - 3.4.1 - 3.2.5 - 3.1.0 - 1.45 - 3.4.0 - 3.1.1 - 3.6.0 - 3.3.0 - 3.6.3 - 3.11.0 - 3.11.0 - 3.5.0 - 3.0.1 - 3.3.1 - 3.5.2 - 3.12.1 - 3.3.0 - 3.2.5 - yyyy-MM-dd'T'HH:mm:ssZ - 8 - 8 - 8 - 8 - 8 - false - 5.3.6 - 5.3 - 5.3 - 5.3 - 5.3 - 20151125 - 2.2.2 - 1.3.1 - 2.19.0 - 2.19.0 - 1.5.0 - 1.5.0 - 1.5.0 - 1.5.0 - 3.2.7 - 0.2.0 - 4.0.2 - 1.1.1 - 4.0.0 - 2.1.0 - 4.0.2 - 7.0.0 - 1.3.2 - 6.0.1 - 1.2.1 - 1.0.2 - 3.1.3 - 2.5.0 - 1.2.7 - 0.4.8 - 2.2.10 - 2.5.0.1 - 1.8.1.1 - 2.3.0.4 - 2.5.1.4 - 2.5.3.1 - 1.9.0.1 - 0.32.1.1 - 0.32.2.0 - 1.54h - 1.2.6 - 2.0.4 - 0.2.0 - 6.0.2 - 1.2.1 - 0.7.5 - 0.1.2 - 0.8.1 - 0.7.1 - 1.0.0-5.6 - 1.0.0-5.6 - 0.1.3 - 2.0.0 - 0.1.1 - 0.8.1 - 0.3.1 - 0.3.2 - 0.3.3 - 0.8.4 - 0.2.0 - 1.1.7 - 0.3.1 - 1.0.1 - 1.0.1 - 2.15.0 - 0.1.4 - 0.2.1 - 0.3.1 - 0.14.0 - 1.0.0-beta-17 - 2.0.1 - 2.0.0 - 0.12.0 - 4.0.1 - 0.14.1 - 1.0.0 - 6.3.0 - 5.14.0 - 5.14.0 - 1.2.10 - 3.2.7 - 0.2.0 - 3.0.3 - 1.6.13 - 3.9.6 - 3.3 - 45.1.1 - 4.12.0 - 3.8.0 - 1.0.1 - 6.0.21 - 5.3.8 - 6.3.4 - 7.2.0 - 7.2.0 - 7.2.0 - 7.2.0 - 7.2.0 - 0.2.4 - 5.7.2 - 5.6.4 - 5.5.2 - 5.9.0 - 5.6.13 - 5.5.15 - 5.7.5 - 5.6.10 - 0.1.4 - 0.3.26-1.5.10 - 5.9 - 4.9.0-1.5.10 - 4.3.4 - 3.5.3 - 3.5.3 - 4.11.1 - 4.11.1 - 1.10.14 - 1.10.14 - 4.4 - 1.26.0 - 1.10.0 - 3.14.0 - 3.6.1 - 2.12.0 - 1.11.0 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.5.14 - 4.4.16 - 4.5.14 - 2.5.2 - 2.21.22 - 2.20.0 - 2.20.0 - 3.9.6 - 3.11.0 - 0.13.1 - 3.3.2 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 2.4.8 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 2.9 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 6.1.1-1.5.10 - 1.14.3-1.5.10 - 1.5.10 - 1.5.10 - 1.84.1-1.5.10 - 0.3.26-1.5.10 - 4.9.0-1.5.10 - 5.3.4-1.5.10 - 3.42.0 - 2.2.0 - 4.0.0 - 11.1.0 - 11.1.0 - 11.1.0 - 11.1.0 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 0.41 - 1.1.5 - 1.0.2 - 4.0.2 - 1.1.1 - 4.0.0 - 2.1.0 - 4.0.2 - 7.0.0 - 1.3.2 - 6.0.1 - 1.2.1 - 3.1.3 - 3.30.2-GA - 2.0.6.1 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.8.0 - 1.8.0 - 1.5.4 - 3.4.3 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 0.14 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 1.49 - 2.0.5 - 2.5.0 - 2.5.0 - 1.7.2 - 1.7.2 - 1.7.2 - 2.5.0 - 2.5.0 - 2.5.0 - 2.5.0 - 1.10.5 - 2.80b11 - 1.0.58 - 2.2.1 - 20240205 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 1.0.1 - 1.8.0 - 3.1.0 - 2.19.0 - 4.2.1 - 3.3 - 45.1.1 - 1.37 - 1.37 - 5.3.6 - 1.0.1 - 6.0.21 - 5.3.8 - 6.3.4 - 5.7.2 - 5.6.4 - 5.5.2 - 5.9.0 - 5.6.13 - 5.5.15 - 5.7.5 - 5.6.10 - 9.6 - 9.6 - 9.6 - 9.6 - 9.6 - 42.7.2 - 2.7.3 - 0.4.2 - 1.6.0-scijava-2 - 1.6.0-scijava-2 - 2.4.2 - 0.7.4-scijava - 2.2.2 - 2.5.0 - 3.1.0 - 0.1.2 - 2.98.0 - 2.0.3 - 0.1.2 - 0.3.0 - 0.1.0 - 1.0.0-beta-3 - 1.0.6 - 1.0.1 - 0.2.0 - 0.2.4 - 0.3.1 - 0.1.3 - 0.1.4 - 2.0.4 - 1.0.2 - 0.1.7 - 1.0.1 - 1.1.0 - 0.2.1 - 1.0.0 - 0.4.1 - 0.1.6 - 1.0.0 - 0.4.1 - 1.0.0 - 0.3.1 - 1.0.1 - 0.2.1 - 0.5.3 - 0.3.0 - 0.2.3 - 0.3.2 - 1.0.2 - 2.0.8 - 1.6.0-scijava-2 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 0.2.1 - 2.7 - 2.6.0 - 2.6.0 - 3.2.9.RELEASE - 3.2.9.RELEASE - 3.2.9.RELEASE - 1.12.0 - 1.12.0 - 1.12.0 - 1.12.0 - 1.12.0 - 1.6.8 - 1.9 - 2.2 - ${package-guess} - 2.0.1 - 3.0.2 - 3.0.2 - 3.1.0 - 4.7.5 - 2.2.0 - 4.0.0 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 42.7.2 - - UTF-8 - UTF-8 - 2.34.0 - 1.29.0 - 1.12.0 - 3.23.0 - 3.23.0 - 3.23.0 - 3.23.0 - 1.7 - 1.11.9 - 3.0.8 - 2.0.1 - sonatype-oss-release - 1.2.25 - 0.28.1 - 0.15.0 - 3.4.0 - 3.0.2 - 2.0.1 - 4.0.5 - 3.4.2 - 2.0.1 - 0.5.4 - 2.0.2 - 1.11.0 - 1.18.0 - 3.0.1 - 3.0.1 - 2.1.1 - 2.0.2 - 2.0.1 - 3.0.0 - 3.0.6 - 2.0.7 - 2.5.0 - 3.0.3 - 2.1.0 - 1.0.6 - 2.1.8 - 2.1.2 - 2.3.0 - 2.0.4 - 2.0.3 - 2.0.1 - 2.0.8 - 2.1.1 - 3.1.3 - 2.0.1 - 2.0.1 - 1.0.2 - 2.3.5 - 1.1.1 - 2.0.2 - 2.0.1 - 4.2.2 - 2.0.2 - 3.0.1 - 3.0.1 - 2.0.1 - 2.0.0 - 2.0.1 - 3.0.0 - 4.1.2 - 4.1.2 - 2.0.2 - 2.0.1 - 5.0.0 - 5.0.0 - 2.0.1 - 2.0.1 - 7.1.1 - 2.1.1 - 3.0.1 - 2.0.0 - 2.0.0 - 1.1.2 - 2.0.2 - 2.0.5 - 2.0.2 - 5.0.25 - 2.0.3 - 2.0.1 - 3.1.10 - 1.0.5 - 2.1.1 - 2.0.2 - 2.1.2 - 2.0.1 - 3.1.9 - 1.7-fiji4 - 1.1.4 - 1.1.4 - 2.0.1 - 2.1.1 - 2.1.0 - 25.0.2 - 2.0.1 - 3.1.4 - 0.1.2 - 1.2.5 - 1.4.0 - 1.2.1 - 3.2.0 - 2.0.1 - 1.2.1 - 1.3.1 - 7.11.1 - 3.3.4 - 1.3.10 - 2.0.4 - 2.2.0 - 3.0.4 - 2.0.3 - 1.0.3 - 2.0.3 - 2.0.1 - 2.5.0 - 2.0.3 - 2.01.4 - 2.6.13 - 10.4.13 - 3.1.2 - 1.0.0-beta-34 - 6.2.4 - 9.1.0 - 1.0.0 - 2.1.4 - 2.1.3 - 2.15.0 - 0.1.17 - 0.3.11 - 1.1.10 - 1.0.2 - 2.0.1 - 3.0.2 - 3.0.8 - 2.0.1 - 2.2.7 - 1.0.1 - 2.0.0 - 2.1.1 - 1.1.2 - 4.1.1 - 0.6.1 - 0.2.2 - 1.1.1 - 0.3.1 - 0.9.0 - 0.17.1 - 0.46.0 - 0.1.2 - 2.1.1 - 2.98.0 - 2.0.3 - 0.1.2 - 0.3.0 - 0.1.0 - 1.0.0-beta-3 - 1.0.6 - 3.0.0 - 1.0.1 - 0.2.0 - 0.2.4 - 0.3.1 - 0.1.3 - 0.1.4 - 2.0.4 - 1.0.2 - 0.1.7 - 1.0.1 - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - scijava - **/script_templates/** - java - org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji - https://javadoc.scijava.org/Java8/ - https://javadoc.scijava.org/JavaFX8/ - [1.8.0-101,) - 8 - 8 - 3.6.3 - natives-linux_64 - linux-x86_64 - natives-linux-amd64 - linux-x86_64 - linux-x86_64 - natives-linux-amd64 - natives-linux-amd64 - natives-linux-amd64 - natives-linux-amd64 - linux-x86_64 - linux-x86_64 - linux-x86_64 - linux-x86_64 - 64 - x86_64 - amd64 - linux - linux - linux - linux - - founder,lead,developer,debugger,reviewer,support,maintainer - 1.1.0 - 0.2.1 - 1.0.0 - 0.4.1 - 0.1.6 - 1.0.0 - 0.4.1 - 1.0.0 - 0.3.1 - 1.0.1 - 0.2.1 - 0.5.3 - 0.3.0 - 0.2.3 - 0.3.2 - 2.6.0 - 2.6.0 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 2.7 - 2.2 - 3.10.0.2594 - https://s01.oss.sonatype.org - 2.4.8 - 2.4.8 - 2.2.7 - 3.2.9.RELEASE - 3.2.9.RELEASE - 3.2.9.RELEASE - 3.2.9.RELEASE - 1.0.2 - 1.12.0 - 5.3.4-1.5.10 - 0.12.0 - 1.6.8 - 1.2.0 - 1.0.1 - 2.0.0 - 3.0.3 - all - 2.0.8 - 1.6.0-scijava-2 - 1.7 - 2.16.2 - 1.0 - 2.1.1 - 3.9.6 - 3.9.6 - 2.9 - 1.9 - 1.1.2 - 1.5.5-11 - - - - - org.scijava - batch-processor - 0.4.2 - - - org.scijava - minimaven - 2.2.2 - - - org.scijava - native-lib-loader - 2.5.0 - - - org.scijava - parsington - 3.1.0 - - - org.scijava - scijava-cache - 0.1.2 - - - org.scijava - scijava-common - 2.98.0 - - - org.scijava - scijava-config - 2.0.3 - - - org.scijava - scijava-grab - 0.1.2 - - - org.scijava - scijava-io-http - 0.3.0 - - - org.scijava - scijava-java3d - 0.1.0 - - - org.scijava - scijava-listeners - 1.0.0-beta-3 - - - org.scijava - scijava-log-slf4j - 1.0.6 - - - org.scijava - scijava-optional - 1.0.1 - - - org.scijava - scijava-plot - 0.2.0 - - - org.scijava - scijava-plugins-commands - 0.2.4 - - - org.scijava - scijava-plugins-platforms - 0.3.1 - - - org.scijava - scijava-plugins-text-markdown - 0.1.3 - - - org.scijava - scijava-plugins-text-plain - 0.1.4 - - - org.scijava - scijava-search - 2.0.4 - - - org.scijava - scijava-table - 1.0.2 - - - org.scijava - scijava-ui-awt - 0.1.7 - - - org.scijava - scijava-ui-swing - 1.0.1 - - - org.scijava - script-editor - 1.0.0 - - - org.scijava - script-editor-jython - 1.1.0 - - - org.scijava - script-editor-scala - 0.2.1 - - - org.scijava - scripting-beanshell - 0.4.1 - - - org.scijava - scripting-clojure - 0.1.6 - - - org.scijava - scripting-groovy - 1.0.0 - - - org.scijava - scripting-java - 0.4.1 - - - org.scijava - scripting-javascript - 1.0.0 - - - org.scijava - scripting-jruby - 0.3.1 - - - org.scijava - scripting-jython - 1.0.1 - - - org.scijava - scripting-kotlin - 0.2.1 - - - org.scijava - scripting-matlab - 0.5.3 - - - org.scijava - scripting-python - 0.3.0 - - - org.scijava - scripting-renjin - 0.2.3 - - - org.scijava - scripting-scala - 0.3.2 - - - org.scijava - swing-checkbox-tree - 1.0.2 - - - org.scijava - ui-behaviour - 2.0.8 - - - net.imagej - imagej - 2.15.0 - - - net.imagej - ij - 1.54h - - - com.sun - tools - - - - - net.imagej - ij1-patcher - 1.2.6 - - - net.imagej - imagej-common - 2.0.4 - - - net.imagej - imagej-deprecated - 0.2.0 - - - net.imagej - imagej-launcher - 6.0.2 - - - net.imagej - imagej-legacy - 1.2.1 - - - net.imagej - imagej-matlab - 0.7.5 - - - net.imagej - imagej-mesh - 0.8.1 - - - net.imagej - imagej-mesh-io - 0.1.2 - - - net.imagej - imagej-notebook - 0.7.1 - - - net.imagej - imagej-omero - 1.0.0-5.6 - - - net.imagej - imagej-omero-legacy - 1.0.0-5.6 - - - net.imagej - imagej-opencv - 0.1.3 - - - net.imagej - imagej-ops - 2.0.0 - - - net.imagej - imagej-plugins-batch - 0.1.1 - - - net.imagej - imagej-plugins-commands - 0.8.1 - - - net.imagej - imagej-plugins-tools - 0.3.1 - - - net.imagej - imagej-plugins-uploader-ssh - 0.3.2 - - - net.imagej - imagej-plugins-uploader-webdav - 0.3.3 - - - net.imagej - imagej-scripting - 0.8.4 - - - net.imagej - imagej-server - 0.2.0 - - - net.imagej - imagej-tensorflow - 1.1.7 - - - net.imagej - imagej-ui-awt - 0.3.1 - - - net.imagej - imagej-ui-swing - 1.0.1 - - - net.imagej - imagej-updater - 1.0.1 - - - net.imagej - op-finder - 0.1.4 - - - net.imglib2 - imglib2 - 6.3.0 - - - net.imglib2 - imglib2-algorithm - 0.14.0 - - - net.imglib2 - imglib2-algorithm-fft - 0.2.1 - - - net.imglib2 - imglib2-algorithm-gpl - 0.3.1 - - - net.imglib2 - imglib2-cache - 1.0.0-beta-17 - - - net.imglib2 - imglib2-ij - 2.0.1 - - - net.imglib2 - imglib2-imglyb - 2.0.0 - - - net.imglib2 - imglib2-realtransform - 4.0.1 - - - net.imglib2 - imglib2-roi - 0.14.1 - - - net.imglib2 - imglib2-unsafe - 1.0.0 - - - io.scif - scifio - 0.46.0 - - - io.scif - scifio-bf-compat - 4.1.1 - - - io.scif - scifio-cli - 0.6.1 - - - io.scif - scifio-hdf5 - 0.2.2 - - - io.scif - scifio-jai-imageio - 1.1.1 - - - io.scif - scifio-labeling - 0.3.1 - - - io.scif - scifio-lifesci - 0.9.0 - - - io.scif - scifio-ome-xml - 0.17.1 - - - sc.fiji - fiji - 2.15.0 - - - sc.fiji - 3D_Blob_Segmentation - 3.0.2 - - - sc.fiji - 3D_Objects_Counter - 2.0.1 - - - sc.fiji - 3D_Viewer - 4.0.5 - - - sc.fiji - AnalyzeSkeleton_ - 3.4.2 - - - sc.fiji - Anisotropic_Diffusion_2D - 2.0.1 - - - sc.fiji - Archipelago_Plugins - 0.5.4 - - - sc.fiji - Arrow_ - 2.0.2 - - - sc.fiji - Auto_Local_Threshold - 1.11.0 - - - sc.fiji - Auto_Threshold - 1.18.0 - - - sc.fiji - BalloonSegmentation_ - 3.0.1 - - - sc.fiji - Bug_Submitter - 2.1.1 - - - sc.fiji - CPU_Meter - 2.0.2 - - - sc.fiji - Calculator_Plus - 2.0.1 - - - sc.fiji - Cell_Counter - 3.0.0 - - - sc.fiji - Colocalisation_Analysis - 3.0.6 - - - sc.fiji - Color_Histogram - 2.0.7 - - - sc.fiji - Color_Inspector_3D - 2.5.0 - - - sc.fiji - Colour_Deconvolution - 3.0.3 - - - sc.fiji - CorrectBleach_ - 2.1.0 - - - sc.fiji - Correct_3D_Drift - 1.0.6 - - - sc.fiji - Descriptor_based_registration - 2.1.8 - - - sc.fiji - Dichromacy_ - 2.1.2 - - - sc.fiji - Directionality_ - 2.3.0 - - - sc.fiji - FS_Align_TrakEM2 - 2.0.4 - - - sc.fiji - Feature_Detection - 2.0.3 - - - sc.fiji - Fiji_Archipelago - 2.0.1 - - - sc.fiji - Fiji_Developer - 2.0.8 - - - sc.fiji - Fiji_Package_Maker - 2.1.1 - - - sc.fiji - Fiji_Plugins - 3.1.3 - - - sc.fiji - FilamentDetector - 2.0.1 - - - sc.fiji - FlowJ_ - 2.0.1 - - - sc.fiji - Graph_Cut - 1.0.2 - - - sc.fiji - Gray_Morphology - 2.3.5 - - - org.janelia - H5J_Loader_Plugin - 1.1.5 - - - sc.fiji - HDF5_Vibez - 1.1.1 - - - sc.fiji - Helmholtz_Analysis - 2.0.2 - - - sc.fiji - IJ_Robot - 2.0.1 - - - sc.fiji - IO_ - 4.2.2 - - - sc.fiji - Image_5D - 2.0.2 - - - sc.fiji - Image_Expression_Parser - 3.0.1 - - - sc.fiji - Interactive_3D_Surface_Plot - 3.0.1 - - - sc.fiji - IsoData_Classifier - 2.0.1 - - - sc.fiji - Kappa - 2.0.0 - - - sc.fiji - Kuwahara_Filter - 2.0.1 - - - sc.fiji - KymographBuilder - 3.0.0 - - - sc.fiji - LSM_Reader - 4.1.2 - - - sc.fiji - LSM_Toolbox - 4.1.2 - - - sc.fiji - Lasso_and_Blow_Tool - 2.0.2 - - - sc.fiji - Linear_Kuwahara - 2.0.1 - - - sc.fiji - LocalThickness_ - 5.0.0 - - - sc.fiji - MTrack2_ - 2.0.1 - - - sc.fiji - M_I_P - 2.0.1 - - - sc.fiji - Manual_Tracking - 2.1.1 - - - sc.fiji - Multi_Kymograph - 3.0.1 - - - sc.fiji - OMEVisual - 2.0.0 - - - sc.fiji - PIV_analyser - 2.0.0 - - - sc.fiji - QuickPALM_ - 1.1.2 - - - sc.fiji - RATS_ - 2.0.2 - - - sc.fiji - Reconstruct_Reader - 2.0.5 - - - sc.fiji - SPIM_Opener - 2.0.2 - - - sc.fiji - SPIM_Registration - 5.0.25 - - - sc.fiji - Samples_ - 2.0.3 - - - sc.fiji - Series_Labeler - 2.0.1 - - - sc.fiji - Siox_Segmentation - 1.0.5 - - - sc.fiji - Skeletonize3D_ - 2.1.1 - - - sc.fiji - SplineDeformationGenerator_ - 2.0.2 - - - sc.fiji - Stack_Manipulation - 2.1.2 - - - sc.fiji - Statistical_Region_Merging - 2.0.1 - - - sc.fiji - Stitching_ - 3.1.9 - - - sc.fiji - Sync_Win - 1.7-fiji4 - - - sc.fiji - Thread_Killer - 2.0.1 - - - sc.fiji - Time_Lapse - 2.1.1 - - - sc.fiji - Time_Stamper - 2.1.0 - - - sc.fiji - ToAST_ - 25.0.2 - - - sc.fiji - TopoJ_ - 2.0.1 - - - sc.fiji - Trainable_Segmentation - 3.3.4 - - - sc.fiji - TrakEM2_Archipelago - 2.0.4 - - - sc.fiji - VIB-lib - 2.2.0 - - - sc.fiji - VIB_ - 3.0.4 - - - sc.fiji - Vaa3d_Reader - 2.0.3 - - - sc.fiji - Vaa3d_Writer - 1.0.3 - - - sc.fiji - Video_Editing - 2.0.1 - - - sc.fiji - View5D_ - 2.5.0 - - - sc.fiji - Volume_Calculator - 2.0.3 - - - sc.fiji - Volume_Viewer - 2.01.4 - - - sc.fiji - bUnwarpJ_ - 2.6.13 - - - sc.fiji - bij - 1.0.0 - - - sc.fiji - blockmatching_ - 2.1.4 - - - sc.fiji - fiji-lib - 2.1.3 - - - sc.fiji - legacy-imglib1 - 1.1.10 - - - sc.fiji - level_sets - 1.0.2 - - - sc.fiji - pal-optimization - 2.0.1 - - - sc.fiji - panorama_ - 3.0.2 - - - sc.fiji - register_virtual_stack_slices - 3.0.8 - - - sc.fiji - registration_3d - 2.0.1 - - - sc.fiji - weave_jy2java - 2.1.1 - - - jitk - jitk-tps - 3.0.4 - - - sc.fiji - bigwarp_fiji - 9.1.0 - - - com.googlecode.efficient-java-matrix-library - ejml - - - - - mpicbg - mpicbg - 1.5.0 - - - mpicbg - mpicbg_ - 1.5.0 - - - sc.fiji - trakem2_tps - 2.0.0 - - - sc.fiji - z_spacing - 1.1.2 - - - sc.fiji - bigdataviewer-core - 10.4.13 - - - sc.fiji - bigdataviewer-server - 3.1.2 - - - sc.fiji - bigdataviewer-vistools - 1.0.0-beta-34 - - - sc.fiji - bigdataviewer_fiji - 6.2.4 - - - sc.fiji - spim_data - 2.2.7 - - - sc.fiji - TrackMate - 7.11.1 - - - sc.fiji - TrackMate-Cellpose - 0.1.2 - - - sc.fiji - TrackMate-CSVImporter - 3.1.4 - - - sc.fiji - TrackMate-ExTrack - 1.2.5 - - - sc.fiji - TrackMate-Ilastik - 1.4.0 - - - sc.fiji - TrackMate-MorphoLibJ - 1.2.1 - - - sc.fiji - TrackMate-Oneat - 3.2.0 - - - sc.fiji - TrackMate-Skeleton - 2.0.1 - - - sc.fiji - TrackMate-StarDist - 1.2.1 - - - sc.fiji - TrackMate-Weka - 1.3.1 - - - sc.fiji - T2-NIT - 1.1.4 - - - sc.fiji - T2-TreelineGraph - 1.1.4 - - - sc.fiji - TrakEM2_ - 1.3.10 - - - sc.fiji - VectorString - 2.0.3 - - - sc.fiji - trakem2-transform - 1.0.1 - - - net.imglib2 - imglib2-label-multisets - 0.12.0 - - - org.janelia.saalfeldlab - n5 - 3.1.3 - - - org.janelia.saalfeldlab - n5-aws-s3 - 4.0.2 - - - org.janelia.saalfeldlab - n5-blosc - 1.1.1 - - - org.janelia.saalfeldlab - n5-google-cloud - 4.0.0 - - - org.janelia.saalfeldlab - n5-hdf5 - 2.1.0 - - - org.janelia.saalfeldlab - n5-ij - 4.0.2 - - - org.janelia.saalfeldlab - n5-imglib2 - 7.0.0 - - - org.janelia.saalfeldlab - n5-universe - 1.3.2 - - - org.janelia.saalfeldlab - n5-viewer_fiji - 6.0.1 - - - org.janelia.saalfeldlab - n5-zarr - 1.2.1 - - - fr.inra.ijpb - MorphoLibJ_ - 1.6.2 - - - net.haesleinhuepf - clij_ - 1.9.0.1 - - - net.haesleinhuepf - clij-core - 1.8.1.1 - - - net.haesleinhuepf - clij-coremem - 2.3.0.4 - - - net.haesleinhuepf - clij-clearcl - 2.5.0.1 - - - net.haesleinhuepf - clij2_ - 2.5.3.1 - - - net.haesleinhuepf - clij2-assistant_ - 2.5.1.4 - - - net.haesleinhuepf - clijx_ - 0.32.2.0 - - - net.haesleinhuepf - clijx-weka_ - 0.32.1.1 - - - net.preibisch - BigStitcher - 1.2.10 - - - net.preibisch - multiview-reconstruction - 3.2.7 - - - net.preibisch - multiview-simulation - 0.2.0 - - - org.bonej - bonej-plugins - 7.0.18 - - - org.bonej - bonej-ops - 7.0.18 - - - org.bonej - bonej-legacy-plugins_ - 7.0.18 - - - org.bonej - bonej-legacy-util_ - 7.0.18 - - - org.bonej - bonej-utilities - 7.0.18 - - - org.morphonets - SNT - 4.2.1 - - - org.jzy3d - jzy3d-emul-gl - - - org.jzy3d - jGL - - - - - sc.fiji - MaMuT - 7.1.1 - - - sc.fiji - labkit-pixel-classification - 0.1.17 - - - sc.fiji - labkit-ui - 0.3.11 - - - com.zeroc - glacier2 - 3.6.5 - - - com.zeroc - ice - 3.6.5 - - - org.openmicroscopy - metakit - 5.3.6 - - - ch.qos.logback - logback-classic - - - - - org.openmicroscopy - ome-codecs - 1.0.1 - - - org.openmicroscopy - ome-common - 6.0.21 - - - ch.qos.logback - logback-classic - - - xalan - serializer - - - xalan - xalan - - - - - org.openmicroscopy - ome-poi - 5.3.8 - - - org.openmicroscopy - ome-xml - 6.3.4 - - - ome - jxrlib-all - 0.2.4 - - - ome - bio-formats-tools - 7.2.0 - - - xalan - serializer - - - xalan - xalan - - - - - ome - bio-formats_plugins - 7.2.0 - - - ch.qos.logback - logback-classic - - - - - ome - formats-api - 7.2.0 - - - xalan - serializer - - - xalan - xalan - - - - - ome - formats-bsd - 7.2.0 - - - xalan - serializer - - - xalan - xalan - - - - - ome - formats-gpl - 7.2.0 - - - org.openmicroscopy - omero-blitz - 5.7.2 - - - com.sun.activation - javax.activation - - - org.apache.xmlgraphics - batik-all - - - - - org.openmicroscopy - omero-common - 5.6.4 - - - ch.qos.logback - logback-classic - - - - - org.openmicroscopy - omero-dsl-plugin - 5.5.2 - - - org.openmicroscopy - omero-gateway - 5.9.0 - - - org.openmicroscopy - omero-model - 5.6.13 - - - javax.transaction - jta - - - org.apache.solr - solr-commons-csv - - - - - org.openmicroscopy - omero-renderer - 5.5.15 - - - c3p0 - c3p0 - - - - - org.openmicroscopy - omero-romio - 5.7.5 - - - org.openmicroscopy - omero-server - 5.6.10 - - - c3p0 - c3p0 - - - com.sun.mail - javax.mail - - - javax.activation - activation - - - org.apache.xmlgraphics - batik-all - - - - - net.clearcontrol - coremem - 0.4.8 - - - com.google.android.tools - dx - - - - - net.clearvolume - cleargl - 2.2.10 - - - org.jogamp.gluegen - gluegen-rt-main - - - org.jogamp.jogl - jogl-all-main - - - - - net.algart - algart-tiff - 1.2.7 - - - com.amazonaws - aws-java-sdk-core - 1.12.667 - - - com.amazonaws - aws-java-sdk-s3 - 1.12.667 - - - antlr - antlr - 2.7.7 - - - org.antlr - ST4 - 4.3.4 - - - org.antlr - antlr - 3.5.3 - - - org.antlr - antlr-runtime - 3.5.3 - - - org.apache.ant - ant - 1.10.14 - - - org.apache.ant - ant-launcher - 1.10.14 - - - org.apache.groovy - groovy - 4.0.18 - - - org.apache.groovy - groovy-ant - 4.0.18 - - - org.apache.groovy - groovy-astbuilder - 4.0.18 - - - org.apache.groovy - groovy-cli-commons - 4.0.18 - - - org.apache.groovy - groovy-cli-picocli - 4.0.18 - - - org.apache.groovy - groovy-console - 4.0.18 - - - org.apache.groovy - groovy-contracts - 4.0.18 - - - org.apache.groovy - groovy-datetime - 4.0.18 - - - org.apache.groovy - groovy-dateutil - 4.0.18 - - - org.apache.groovy - groovy-docgenerator - 4.0.18 - - - org.apache.groovy - groovy-ginq - 4.0.18 - - - org.apache.groovy - groovy-groovydoc - 4.0.18 - - - org.apache.groovy - groovy-groovysh - 4.0.18 - - - org.apache.groovy - groovy-jmx - 4.0.18 - - - org.apache.groovy - groovy-json - 4.0.18 - - - org.apache.groovy - groovy-jsr223 - 4.0.18 - - - org.apache.groovy - groovy-macro - 4.0.18 - - - org.apache.groovy - groovy-macro-library - 4.0.18 - - - org.apache.groovy - groovy-nio - 4.0.18 - - - org.apache.groovy - groovy-servlet - 4.0.18 - - - org.apache.groovy - groovy-sql - 4.0.18 - - - org.apache.groovy - groovy-swing - 4.0.18 - - - org.apache.groovy - groovy-templates - 4.0.18 - - - org.apache.groovy - groovy-test - 4.0.18 - - - org.apache.groovy - groovy-test-junit5 - 4.0.18 - - - org.apache.groovy - groovy-testng - 4.0.18 - - - org.apache.groovy - groovy-toml - 4.0.18 - - - org.apache.groovy - groovy-typecheckers - 4.0.18 - - - org.apache.groovy - groovy-xml - 4.0.18 - - - org.apache.groovy - groovy-yaml - 4.0.18 - - - org.apache.ivy - ivy - 2.5.2 - - - org.apache.logging.log4j - log4j-api - 2.20.0 - - - org.apache.logging.log4j - log4j-core - 2.20.0 - - - org.apache.maven.shared - maven-artifact-transfer - 0.13.1 - - - org.apache.maven.shared - maven-common-artifact-filters - 3.3.2 - - - org.apache.maven - maven-core - 3.9.6 - - - org.apache.maven.plugin-tools - maven-plugin-tools-api - 3.11.0 - - - org.codehaus.plexus - plexus-component-annotations - 2.2.0 - - - org.codehaus.plexus - plexus-utils - 4.0.0 - - - org.sonatype.sisu - sisu-inject-bean - 2.6.0 - - - org.sonatype.sisu - sisu-inject-plexus - 2.6.0 - - - org.apache.poi - poi - 5.2.5 - - - org.apache.poi - poi-examples - 5.2.5 - - - org.apache.poi - poi-excelant - 5.2.5 - - - org.apache.poi - poi-ooxml - 5.2.5 - - - org.apache.poi - poi-ooxml-lite - 5.2.5 - - - org.apache.poi - poi-scratchpad - 5.2.5 - - - org.apache.spark - spark-core_2.11 - 2.4.8 - - - com.sun.jersey - jersey-core - - - commons-beanutils - commons-beanutils-core - - - io.netty - netty-all - - - - - org.apache.httpcomponents - httpclient - 4.5.14 - - - org.apache.httpcomponents - httpcore - 4.4.16 - - - org.apache.httpcomponents - httpmime - 4.5.14 - - - args4j - args4j - 2.33 - - - org.ow2.asm - asm - 9.6 - - - org.ow2.asm - asm-analysis - 9.6 - - - org.ow2.asm - asm-commons - 9.6 - - - org.ow2.asm - asm-tree - 9.6 - - - org.ow2.asm - asm-util - 9.6 - - - org.apache.xmlgraphics - batik-anim - 1.17 - - - org.apache.xmlgraphics - batik-awt-util - 1.17 - - - org.apache.xmlgraphics - batik-bridge - 1.17 - - - xalan - xalan - - - - - org.apache.xmlgraphics - batik-codec - 1.17 - - - org.apache.xmlgraphics - batik-constants - 1.17 - - - org.apache.xmlgraphics - batik-css - 1.17 - - - org.apache.xmlgraphics - batik-dom - 1.17 - - - xalan - xalan - - - - - org.apache.xmlgraphics - batik-ext - 1.17 - - - org.apache.xmlgraphics - batik-extension - 1.17 - - - org.apache.xmlgraphics - batik-gui-util - 1.17 - - - org.apache.xmlgraphics - batik-gvt - 1.17 - - - org.apache.xmlgraphics - batik-i18n - 1.17 - - - org.apache.xmlgraphics - batik-parser - 1.17 - - - org.apache.xmlgraphics - batik-rasterizer - 1.17 - - - org.apache.xmlgraphics - batik-rasterizer-ext - 1.17 - - - org.apache.xmlgraphics - batik-extensions - - - - - org.apache.xmlgraphics - batik-script - 1.17 - - - org.apache.xmlgraphics - batik-slideshow - 1.17 - - - org.apache.xmlgraphics - batik-squiggle - 1.17 - - - org.apache.xmlgraphics - batik-squiggle-ext - 1.17 - - - org.apache.xmlgraphics - batik-extensions - - - - - org.apache.xmlgraphics - batik-svg-dom - 1.17 - - - org.apache.xmlgraphics - batik-svggen - 1.17 - - - org.apache.xmlgraphics - batik-svgpp - 1.17 - - - org.apache.xmlgraphics - batik-swing - 1.17 - - - org.apache.xmlgraphics - batik-transcoder - 1.17 - - - org.apache.xmlgraphics - batik-ttf2svg - 1.17 - - - org.apache.xmlgraphics - batik-util - 1.17 - - - org.apache.xmlgraphics - batik-xml - 1.17 - - - org.apache.xmlgraphics - xmlgraphics-commons - 2.9 - - - org.lasersonlab - jblosc - 1.0.1 - - - com.nativelibs4java - bridj - 0.7.0 - - - com.google.android.tools - dx - - - - - javax.enterprise - cdi-api - 2.0.SP1 - - - org.checkerframework - checker-qual - 3.42.0 - - - commons-beanutils - commons-beanutils - 1.9.4 - - - commons-cli - commons-cli - 1.6.0 - - - commons-codec - commons-codec - 1.16.1 - - - commons-collections - commons-collections - 3.2.2 - - - org.apache.commons - commons-collections4 - 4.4 - - - org.apache.commons - commons-compress - 1.26.0 - - - org.apache.commons - commons-csv - 1.10.0 - - - commons-io - commons-io - 2.15.1 - - - commons-lang - commons-lang - 2.6 - - - org.apache.commons - commons-lang3 - 3.14.0 - - - commons-logging - commons-logging - 1.3.0 - - - org.apache.commons - commons-math3 - 3.6.1 - - - org.apache.commons - commons-pool2 - 2.12.0 - - - org.apache.commons - commons-text - 1.11.0 - - - cglib - cglib - 3.3.0 - - - dev.dirs - directories - 26 - - - org.eclipse.collections - eclipse-collections - 11.1.0 - - - org.eclipse.collections - eclipse-collections-api - 11.1.0 - - - org.eclipse.collections - eclipse-collections-forkjoin - 11.1.0 - - - org.eclipse.collections - eclipse-collections-testutils - 11.1.0 - - - org.eclipse.swt - org.eclipse.swt.cocoa.macosx - 4.3 - - - org.eclipse.swt - org.eclipse.swt.cocoa.macosx.x86_64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.aix.ppc - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.aix.ppc64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.hpux.ia64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.ppc - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.ppc64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.s390 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.s390x - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.x86 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.x86_64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.solaris.sparc - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.solaris.x86 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.win32.win32.x86 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.win32.win32.x86_64 - 4.3 - - - org.ejml - ejml-all - 0.41 - - - com.google.errorprone - error_prone_annotations - 2.25.0 - - - com.formdev - flatlaf - 3.4 - - - com.formdev - flatlaf-fonts-jetbrains-mono - 2.304 - - - com.google.api-client - google-api-client - 2.3.0 - - - com.google.api-client - google-api-client-android - 2.3.0 - - - com.google.api-client - google-api-client-appengine - 2.3.0 - - - com.google.api-client - google-api-client-gson - 2.3.0 - - - com.google.api-client - google-api-client-jackson2 - 2.3.0 - - - com.google.api-client - google-api-client-protobuf - 2.3.0 - - - com.google.api-client - google-api-client-servlet - 2.3.0 - - - javax.servlet - servlet-api - - - - - com.google.api-client - google-api-client-xml - 2.3.0 - - - com.google.api - api-common - 2.26.0 - - - com.google.api - gax - 2.43.0 - - - com.google.api - gax-grpc - 2.43.0 - - - com.google.api - gax-httpjson - 2.43.0 - - - com.google.api.grpc - proto-google-common-protos - 2.34.0 - - - com.google.api.grpc - proto-google-iam-v1 - 1.29.0 - - - com.google.auth - google-auth-library-appengine - 1.23.0 - - - com.google.auth - google-auth-library-credentials - 1.23.0 - - - com.google.auth - google-auth-library-oauth2-http - 1.23.0 - - - com.google.auto.value - auto-value - 1.10.4 - - - com.google.auto.value - auto-value-annotations - 1.10.4 - - - com.google.cloud - google-cloud-core - 2.33.0 - - - com.google.cloud - google-cloud-core-http - 2.33.0 - - - com.google.cloud - google-cloud-nio - 0.127.13 - - - com.google.cloud - google-cloud-resourcemanager - 1.38.0 - - - com.google.cloud - google-cloud-storage - 2.34.0 - - - com.google.http-client - google-http-client - 1.44.1 - - - com.google.http-client - google-http-client-apache-v2 - 1.44.1 - - - com.google.http-client - google-http-client-appengine - 1.44.1 - - - com.google.http-client - google-http-client-gson - 1.44.1 - - - com.google.http-client - google-http-client-jackson2 - 1.44.1 - - - com.google.http-client - google-http-client-xml - 1.44.1 - - - io.grpc - grpc-context - 1.62.2 - - - com.google.code.gson - gson - 2.10.1 - - - com.google.guava - guava - 33.0.0-jre - - - io.humble - humble-video-all - 0.3.0 - - - hsqldb - hsqldb - 1.8.0.10 - - - com.itextpdf - itextpdf - 5.5.13.3 - - - com.google.j2objc - j2objc-annotations - 2.8 - - - org.apache.jackrabbit - jackrabbit-webdav - 2.21.22 - - - org.slf4j - jcl-over-slf4j - - - - - com.fasterxml.jackson.core - jackson-annotations - 2.16.1 - - - com.fasterxml.jackson.core - jackson-core - 2.16.1 - - - com.fasterxml.jackson.core - jackson-databind - 2.16.1 - - - com.fasterxml.jackson.dataformat - jackson-dataformat-cbor - 2.16.1 - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.16.1 - - - com.sun.media - jai-codec - 1.1.3 - - - javax.media - jai-core - 1.1.3 - - - gov.nist.math - jama - 1.0.3 - - - org.scijava - j3dcore - 1.6.0-scijava-2 - - - org.scijava - j3dutils - 1.6.0-scijava-2 - - - org.scijava - vecmath - 1.6.0-scijava-2 - - - org.bytedeco - javacpp - 1.5.10 - - - org.bytedeco - javacv - 1.5.10 - - - org.bytedeco - ffmpeg - 6.1.1-1.5.10 - - - org.bytedeco - hdf5 - 1.14.3-1.5.10 - - - org.bytedeco - leptonica - 1.84.1-1.5.10 - - - org.bytedeco - openblas - 0.3.26-1.5.10 - - - org.bytedeco - opencv - 4.9.0-1.5.10 - - - org.bytedeco - tesseract - 5.3.4-1.5.10 - - - org.bytedeco - ffmpeg - 6.1.1-1.5.10 - linux-x86_64 - - - org.bytedeco - hdf5 - 1.14.3-1.5.10 - linux-x86_64 - - - org.bytedeco - leptonica - 1.84.1-1.5.10 - linux-x86_64 - - - org.bytedeco - openblas - 0.3.26-1.5.10 - linux-x86_64 - - - org.bytedeco - opencv - 4.9.0-1.5.10 - linux-x86_64 - - - org.bytedeco - tesseract - 5.3.4-1.5.10 - linux-x86_64 - - - org.javassist - javassist - 3.30.2-GA - - - org.jruby.jcodings - jcodings - 1.0.58 - - - org.jdom - jdom2 - 2.0.6.1 - - - org.scijava - jep - 2.4.2 - - - org.eclipse.jetty - jetty-annotations - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-client - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-continuation - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-deploy - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-http - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-http-spi - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-io - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-jaspi - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-jmx - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-jndi - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-nosql - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-plus - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-proxy - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-rewrite - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-security - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-server - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-servlet - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-servlets - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-spring - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-start - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-util - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-util-ajax - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-webapp - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-xml - 9.4.54.v20240208 - - - org.jfree - jfreechart - 1.5.4 - - - org.jfree - jfreesvg - 3.4.3 - - - org.jgrapht - jgrapht-core - 1.4.0 - - - org.jgrapht - jgrapht-demo - 1.4.0 - - - org.jgrapht - jgrapht-ext - 1.4.0 - - - org.jgrapht - jgrapht-guava - 1.4.0 - - - org.jgrapht - jgrapht-io - 1.4.0 - - - org.jgrapht - jgrapht-opt - 1.4.0 - - - it.unimi.dsi - fastutil - - - - - com.github.vlsi.mxgraph - jgraphx - 4.2.2 - - - cisd - jhdf5 - 19.04.1 - - - org.jheaps - jheaps - 0.14 - - - jline - jline - 2.14.6 - - - org.jline - jline-builtins - 3.25.1 - - - org.jline - jline-console - 3.25.1 - - - org.jline - jline-reader - 3.25.1 - - - org.jline - jline-remote-ssh - 3.25.1 - - - org.jline - jline-remote-telnet - 3.25.1 - - - org.jline - jline-style - 3.25.1 - - - org.jline - jline-terminal - 3.25.1 - - - org.jline - jline-terminal-jna - 3.25.1 - - - net.java.dev.jna - jna - 5.14.0 - - - net.java.dev.jna - jna-platform - 5.14.0 - - - com.github.jnr - jffi - 1.3.13 - - - com.github.jnr - jffi - 1.3.13 - native - - - com.github.jnr - jnr-constants - 0.10.4 - - - com.github.jnr - jnr-ffi - 2.2.16 - - - com.github.jnr - jnr-posix - 3.1.19 - - - joda-time - joda-time - 2.12.7 - - - org.jocl - jocl - 2.0.5 - - - org.jogamp.gluegen - gluegen - 2.5.0 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - - - org.jogamp.joal - joal - 2.5.0 - - - org.jogamp.jocl - jocl - 2.5.0 - - - org.jogamp.jogl - jogl-all - 2.5.0 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-android-aarch64 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-windows-amd64 - - - org.jogamp.joal - joal - 2.5.0 - natives-android-aarch64 - - - org.jogamp.joal - joal - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.joal - joal - 2.5.0 - natives-linux-amd64 - - - org.jogamp.joal - joal - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.joal - joal - 2.5.0 - natives-macosx-universal - - - org.jogamp.joal - joal - 2.5.0 - natives-windows-amd64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-android-aarch64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-linux-amd64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.jocl - jocl - 2.5.0 - natives-macosx-universal - - - org.jogamp.jocl - jocl - 2.5.0 - natives-windows-amd64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-android-aarch64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-linux-amd64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-macosx-universal - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-android-aarch64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-macosx-universal - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-windows-amd64 - - - org.jogamp.java3d - java3d-core - 1.7.2 - - - org.jogamp.java3d - java3d-utils - 1.7.2 - - - org.jogamp.java3d - vecmath - 1.7.2 - - - org.joml - joml - 1.10.5 - - - org.jruby.joni - joni - 2.2.1 - - - org.jpedal - jpedalSTD - 2.80b11 - - - org.smurn - jply - 0.2.1 - - - com.jcraft - jsch - 0.1.55 - - - org.json - json - 20240205 - - - org.python - jython-slim - 2.7.3 - - - com.jcraft - jzlib - 1.1.3 - - - org.jzy3d - jzy3d-core - 2.2.1 - - - org.jzy3d - jzy3d-core-awt - 2.2.1 - - - org.jzy3d - jzy3d-emul-gl-awt - 2.2.1 - - - org.jzy3d - jzy3d-jGL-awt - 2.2.1 - - - org.jzy3d - jzy3d-jdt-core - 2.2.1 - - - org.jzy3d - jzy3d-native-jogl-awt - 2.2.1 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt-natives-linux-i586 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-windows-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-windows-i586 - - - org.jogamp.jogl - jogl-all-natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-natives-linux-i586 - - - org.jogamp.jogl - jogl-all-natives-macosx-universal - - - org.jogamp.jogl - jogl-all-natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-natives-windows-i586 - - - - - org.jzy3d - jzy3d-native-jogl-core - 2.2.1 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt-natives-linux-i586 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-windows-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-windows-i586 - - - org.jogamp.jogl - jogl-all-natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-natives-linux-i586 - - - org.jogamp.jogl - jogl-all-natives-macosx-universal - - - org.jogamp.jogl - jogl-all-natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-natives-windows-i586 - - - - - org.jzy3d - jzy3d-native-jogl-swing - 2.2.1 - - - com.miglayout - miglayout - - - - - org.jzy3d - jzy3d-tester - 2.2.1 - - - org.jetbrains.kotlin - kotlin-compiler-embeddable - 1.9.22 - - - org.jetbrains.kotlin - kotlin-daemon-embeddable - 1.9.22 - - - org.jetbrains.kotlin - kotlin-reflect - 1.9.22 - - - org.jetbrains.kotlin - kotlin-script-runtime - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-common - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-compiler-embeddable - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-jsr223 - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-jvm - 1.9.22 - - - org.jetbrains.kotlin - kotlin-stdlib - 1.9.22 - - - org.jetbrains.kotlin - kotlin-stdlib-common - 1.9.22 - - - org.jetbrains.kotlin - kotlin-stdlib-jdk8 - 1.9.22 - - - org.jetbrains.kotlinx - kotlinx-coroutines-core - 1.8.0 - - - org.jetbrains.kotlinx - kotlinx-coroutines-core-jvm - 1.8.0 - - - com.esotericsoftware - kryo - 5.6.0 - - - com.esotericsoftware - minlog - 1.3.1 - - - com.esotericsoftware - reflectasm - 1.11.9 - - - ch.qos.logback - logback-classic - 1.2.12 - - - javax.activation - activation - - - - - ch.qos.logback - logback-core - 1.2.12 - - - org.lz4 - lz4-java - 1.8.0 - - - org.mapdb - mapdb - 3.1.0 - - - net.jpountz.lz4 - lz4 - - - - - com.miglayout - miglayout-core - 5.3 - - - com.miglayout - miglayout-swing - 5.3 - - - com.miglayout - miglayout-swt - 5.3 - - - edu.mines - mines-jtk - 20151125 - - - org.objenesis - objenesis - 3.3 - - - com.squareup.okhttp3 - okhttp - 4.12.0 - - - com.squareup.okio - okio - 3.8.0 - - - org.ojalgo - ojalgo - 45.1.1 - - - com.opencsv - opencsv - 5.9 - - - info.picocli - picocli - 4.7.5 - - - org.postgresql - postgresql - 42.7.2 - - - com.google.protobuf - protobuf-java - 3.23.0 - - - com.google.protobuf - protobuf-java-util - 3.23.0 - - - com.google.protobuf - protobuf-kotlin - 3.23.0 - - - com.google.re2j - re2j - 1.7 - - - ch.qos.reload4j - reload4j - 1.2.25 - - - com.fifesoft - rsyntaxtextarea - 3.4.0 - - - com.fifesoft - autocomplete - 3.3.1 - - - com.fifesoft - languagesupport - 3.3.0 - - - org.slf4j - slf4j-api - 1.7.36 - - - org.slf4j - slf4j-ext - 1.7.36 - - - org.slf4j - slf4j-jcl - 1.7.36 - - - org.slf4j - slf4j-jdk14 - 1.7.36 - - - org.slf4j - slf4j-nop - 1.7.36 - - - org.slf4j - slf4j-simple - 1.7.36 - - - org.slf4j - jcl-over-slf4j - 1.7.36 - - - org.yaml - snakeyaml - 2.2 - - - org.snakeyaml - snakeyaml-engine - 2.7 - - - org.springframework - spring-aop - 3.2.9.RELEASE - - - org.springframework - spring-beans - 3.2.9.RELEASE - - - org.springframework - spring-core - 3.2.9.RELEASE - - - org.tensorflow - tensorflow - 1.12.0 - - - org.tensorflow - libtensorflow - 1.12.0 - - - org.tensorflow - libtensorflow_jni - 1.12.0 - - - org.tensorflow - libtensorflow_jni_gpu - 1.12.0 - - - org.tensorflow - proto - 1.12.0 - - - org.threeten - threetenbp - 1.6.8 - - - net.sf.trove4j - trove4j - 3.0.3 - - - nz.ac.waikato.cms.weka - weka-dev - 3.9.6 - - - com.github.fommil.netlib - all - - - com.github.vbmacher - java-cup-runtime - - - com.googlecode.netlib-java - netlib-java - - - com.sun.activation - jakarta.activation - - - nz.ac.waikato.cms.weka.thirdparty - java-cup-11b - - - nz.ac.waikato.cms.weka.thirdparty - java-cup-11b-runtime - - - net.sourceforge.f2j - arpack_combined_all - - - - - org.tukaani - xz - 1.9 - - - com.github.luben - zstd-jni - 1.5.5-11 - - - org.scijava - scijava-common - 2.98.0 - tests - test - - - net.imagej - imagej-legacy - 1.2.1 - tests - test - - - net.imagej - imagej-ops - 2.0.0 - tests - test - - - net.imagej - imagej-updater - 1.0.1 - tests - test - - - net.imglib2 - imglib2 - 6.3.0 - tests - test - - - org.janelia.saalfeldlab - n5 - 3.1.3 - tests - test - - - junit - junit - 4.13.2 - test - - - org.junit.jupiter - junit-jupiter-api - 5.10.2 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.10.2 - test - - - org.junit.jupiter - junit-jupiter-migrationsupport - 5.10.2 - test - - - org.junit.jupiter - junit-jupiter-params - 5.10.2 - test - - - org.junit.vintage - junit-vintage-engine - 5.10.2 - test - - - org.scijava - junit-benchmarks - 0.7.4-scijava - test - - - org.jmockit - jmockit - 1.49 - test - - - org.mockito - mockito-core - 2.19.0 - test - - - org.openjdk.jmh - jmh-core - 1.37 - test - - - org.openjdk.jmh - jmh-generator-annprocess - 1.37 - test - - - - - - - false - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - - - - never - - - false - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - - /home/elect/IdeaProjects/pom-scijava/src/main/java - /home/elect/IdeaProjects/pom-scijava/src/main/scripts - /home/elect/IdeaProjects/pom-scijava/src/test/java - /home/elect/IdeaProjects/pom-scijava/target/classes - /home/elect/IdeaProjects/pom-scijava/target/test-classes - - - org.apache.maven.wagon - wagon-webdav-jackrabbit - 1.0 - - - install - - - /home/elect/IdeaProjects/pom-scijava/src/main/resources - - - - - /home/elect/IdeaProjects/pom-scijava/src/test/resources - - - /home/elect/IdeaProjects/pom-scijava/target - pom-scijava-38.0.0-SNAPSHOT - - - - maven-antrun-plugin - 3.1.0 - - - maven-assembly-plugin - 3.6.0 - - - maven-clean-plugin - 3.3.2 - - - maven-compiler-plugin - 3.8.1 - - - maven-dependency-plugin - 3.6.1 - - - maven-deploy-plugin - 3.1.1 - - - maven-enforcer-plugin - 3.4.1 - - - org.codehaus.mojo - extra-enforcer-rules - 1.7.0 - compile - - - org.scijava - scijava-maven-plugin - 3.0.0 - compile - - - - - maven-failsafe-plugin - 3.2.5 - - - - integration-test - verify - - - - - - maven-gpg-plugin - 3.1.0 - - - sign-artifacts - verify - - sign - - - true - - - - - true - - - - maven-help-plugin - 3.4.0 - - - maven-install-plugin - 3.1.1 - - - maven-jar-plugin - 3.3.0 - - - - test-jar - - - - - true - true - true - - ${package-guess} - - - - ${buildNumber} - 2024-03-03T16:51:20+0000 - ${package-guess} - - - true - - - - - - - true - true - true - - ${package-guess} - - - - ${buildNumber} - 2024-03-03T16:51:20+0000 - ${package-guess} - - - true - - - - maven-javadoc-plugin - 3.6.3 - - 1024m - - https://javadoc.scijava.org/Java8/ - https://javadoc.scijava.org/JavaFX8/ - https://javadoc.scijava.org/SciJava/ - https://javadoc.scijava.org/Alida/ - https://javadoc.scijava.org/Bio-Formats/ - https://javadoc.scijava.org/FLIMLib/ - https://javadoc.scijava.org/Fiji/ - https://javadoc.scijava.org/Icy/ - https://javadoc.scijava.org/ImageJ/ - https://javadoc.scijava.org/ImageJ1/ - https://javadoc.scijava.org/ImgLib2/ - https://javadoc.scijava.org/Java3D/ - https://javadoc.scijava.org/KNIME/ - https://javadoc.scijava.org/LOCI/ - https://javadoc.scijava.org/MiToBo/ - https://javadoc.scijava.org/Micro-Manager-Core/ - https://javadoc.scijava.org/Micro-Manager-Studio/ - https://javadoc.scijava.org/MorphoLibJ/ - https://javadoc.scijava.org/OMERO/ - https://javadoc.scijava.org/SCIFIO/ - https://javadoc.scijava.org/Apache-Commons-IO/ - https://javadoc.scijava.org/Apache-Commons-Lang/ - https://javadoc.scijava.org/Apache-Commons-Math/ - https://javadoc.scijava.org/Apache-Commons-Text/ - https://javadoc.scijava.org/BoneJ/ - https://javadoc.scijava.org/Eclipse/ - https://javadoc.scijava.org/Guava/ - https://javadoc.scijava.org/JAMA/ - https://javadoc.scijava.org/JFreeChart/ - https://javadoc.scijava.org/JGraphT/ - https://javadoc.scijava.org/JHotDraw/ - https://javadoc.scijava.org/JOML/ - https://javadoc.scijava.org/Javassist/ - https://javadoc.scijava.org/MigLayout/ - https://javadoc.scijava.org/NetBeans/ - https://javadoc.scijava.org/Pivot/ - https://javadoc.scijava.org/VisAD/ - https://javadoc.scijava.org/Weka/ - https://javadoc.scijava.org/ojAlgo/ - - - - - maven-plugin-plugin - 3.11.0 - - - maven-project-info-reports-plugin - 3.5.0 - - - maven-release-plugin - 3.0.1 - - - maven-resources-plugin - 3.3.1 - - - maven-shade-plugin - 3.5.2 - - - maven-site-plugin - 3.12.1 - - - maven-source-plugin - 3.3.0 - - - attach-sources - none - - - attach-sources-jar - - jar - - - - - - maven-surefire-plugin - 3.2.5 - - @{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement=true - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.5.0 - - - sanitize-version - - regex-property - - - sanitizedVersion - 38.0.0-SNAPSHOT - ^([0-9]+)\.([0-9]+)\.([0-9]+).*$ - $1.$2.$3 - false - - - - guess-package - - regex-property - - - package-guess - org.scijava.pom-scijava - [^a-z0-9_.]+ - _ - false - - - - - - org.codehaus.mojo - buildnumber-maven-plugin - 3.2.0 - - - validate - - create - - - true - UNKNOWN - - - - - - net.java.dev.jna - platform - 3.5.2 - compile - - - - true - UNKNOWN - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.7 - - - html - xml - - - - - org.codehaus.mojo - exec-maven-plugin - 3.2.0 - - - org.codehaus.mojo - license-maven-plugin - 2.4.0 - - false - true - true - - java - properties - java - - - - - org.codehaus.mojo - tidy-maven-plugin - 1.2.0 - - - org.codehaus.mojo - versions-maven-plugin - 2.16.2 - - - org.scijava - scijava-maven-plugin - 3.0.0 - - - set-rootdir - validate - - set-rootdir - - - - - - com.zenjava - javafx-maven-plugin - 8.8.3 - - SciJava Parent POM - SciJava Parent POM - SciJava Parent POM.jar - - ${sanitizedVersion} - true - - - - net.revelc.code - impsort-maven-plugin - 1.9.0 - - - none - - java.,javax.,com.,net.,org. - java,* - true - - - - - java.,javax.,com.,net.,org. - java,* - true - - - - net.revelc.code.formatter - formatter-maven-plugin - 2.23.0 - - - org.scijava - scijava-coding-style - 2.1.1 - compile - - - - eclipse-formatter-settings/scijava-coding-style.xml - - - - org.fusesource.mvnplugins - maven-graph-plugin - 1.45 - - provided,runtime,system,test - true - - /home/elect/IdeaProjects/pom-scijava/target/dependency-graph.dot - - - - org.honton.chas - exists-maven-plugin - 0.12.0 - - - - remote - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.11 - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - package - - report - - - - - - org.revapi - revapi-maven-plugin - 0.15.0 - - - org.revapi - revapi-java - 0.28.1 - - - - - org.sonarsource.scanner.maven - sonar-maven-plugin - 3.10.0.2594 - - - - - - maven-enforcer-plugin - 3.4.1 - - - enforce-rules - - enforce - - - - - 3.6.3 - - - Plugins need to be versioned! - - - [1.8.0-101,) - - - No Duplicate Classes Allowed! -- For duplicate transitive dependencies, add dependency exclusions. -- For duplications between direct dependencies, resolve or add - ignored classes to this rule's configuration. - true - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - 8 - - com.headius:invokebinder - com.sun:tools - - - module-info - - - test - - - - - name - description - url - inceptionYear - organization - licenses - developers - contributors - mailingLists - scm - issueManagement - ciManagement - properties//license.licenseName - properties//license.copyrightOwners - - - - org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji - - - - - - - - org.codehaus.mojo - extra-enforcer-rules - 1.7.0 - compile - - - org.scijava - scijava-maven-plugin - 3.0.0 - compile - - - - - - 3.6.3 - - - Plugins need to be versioned! - - - [1.8.0-101,) - - - No Duplicate Classes Allowed! -- For duplicate transitive dependencies, add dependency exclusions. -- For duplications between direct dependencies, resolve or add - ignored classes to this rule's configuration. - true - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - 8 - - com.headius:invokebinder - com.sun:tools - - - module-info - - - test - - - - - name - description - url - inceptionYear - organization - licenses - developers - contributors - mailingLists - scm - issueManagement - ciManagement - properties//license.licenseName - properties//license.copyrightOwners - - - - org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji - - - - - - maven-failsafe-plugin - 3.2.5 - - - - integration-test - verify - - - - - - maven-source-plugin - 3.3.0 - - - attach-sources - none - - - attach-sources-jar - - jar - - - - - - maven-surefire-plugin - 3.2.5 - - @{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement=true - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.5.0 - - - sanitize-version - - regex-property - - - sanitizedVersion - 38.0.0-SNAPSHOT - ^([0-9]+)\.([0-9]+)\.([0-9]+).*$ - $1.$2.$3 - false - - - - guess-package - - regex-property - - - package-guess - org.scijava.pom-scijava - [^a-z0-9_.]+ - _ - false - - - - - - org.codehaus.mojo - buildnumber-maven-plugin - 3.2.0 - - - validate - - create - - - true - UNKNOWN - - - - - - net.java.dev.jna - platform - 3.5.2 - compile - - - - true - UNKNOWN - - - - org.scijava - scijava-maven-plugin - 3.0.0 - - - set-rootdir - validate - - set-rootdir - - - older - - - - populate-app - install - - populate-app - - - older - - - - - older - - - - com.zenjava - javafx-maven-plugin - 8.8.3 - - SciJava Parent POM - SciJava Parent POM - SciJava Parent POM.jar - - ${sanitizedVersion} - true - - - - net.revelc.code - impsort-maven-plugin - 1.9.0 - - - none - - java.,javax.,com.,net.,org. - java,* - true - - - - - java.,javax.,com.,net.,org. - java,* - true - - - - net.revelc.code.formatter - formatter-maven-plugin - 2.23.0 - - - org.scijava - scijava-coding-style - 2.1.1 - compile - - - - eclipse-formatter-settings/scijava-coding-style.xml - - - - org.fusesource.mvnplugins - maven-graph-plugin - 1.45 - - provided,runtime,system,test - true - - /home/elect/IdeaProjects/pom-scijava/target/dependency-graph.dot - - - - org.jacoco - jacoco-maven-plugin - 0.8.11 - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - package - - report - - - - - - maven-javadoc-plugin - 3.6.3 - - /usr/lib/jvm/jdk-19/bin/javadoc - 1024m - - https://javadoc.scijava.org/Java8/ - https://javadoc.scijava.org/JavaFX8/ - https://javadoc.scijava.org/SciJava/ - https://javadoc.scijava.org/Alida/ - https://javadoc.scijava.org/Bio-Formats/ - https://javadoc.scijava.org/FLIMLib/ - https://javadoc.scijava.org/Fiji/ - https://javadoc.scijava.org/Icy/ - https://javadoc.scijava.org/ImageJ/ - https://javadoc.scijava.org/ImageJ1/ - https://javadoc.scijava.org/ImgLib2/ - https://javadoc.scijava.org/Java3D/ - https://javadoc.scijava.org/KNIME/ - https://javadoc.scijava.org/LOCI/ - https://javadoc.scijava.org/MiToBo/ - https://javadoc.scijava.org/Micro-Manager-Core/ - https://javadoc.scijava.org/Micro-Manager-Studio/ - https://javadoc.scijava.org/MorphoLibJ/ - https://javadoc.scijava.org/OMERO/ - https://javadoc.scijava.org/SCIFIO/ - https://javadoc.scijava.org/Apache-Commons-IO/ - https://javadoc.scijava.org/Apache-Commons-Lang/ - https://javadoc.scijava.org/Apache-Commons-Math/ - https://javadoc.scijava.org/Apache-Commons-Text/ - https://javadoc.scijava.org/BoneJ/ - https://javadoc.scijava.org/Eclipse/ - https://javadoc.scijava.org/Guava/ - https://javadoc.scijava.org/JAMA/ - https://javadoc.scijava.org/JFreeChart/ - https://javadoc.scijava.org/JGraphT/ - https://javadoc.scijava.org/JHotDraw/ - https://javadoc.scijava.org/JOML/ - https://javadoc.scijava.org/Javassist/ - https://javadoc.scijava.org/MigLayout/ - https://javadoc.scijava.org/NetBeans/ - https://javadoc.scijava.org/Pivot/ - https://javadoc.scijava.org/VisAD/ - https://javadoc.scijava.org/Weka/ - https://javadoc.scijava.org/ojAlgo/ - - - - - maven-clean-plugin - 3.3.2 - - - default-clean - clean - - clean - - - - - - maven-install-plugin - 3.1.1 - - - default-install - install - - install - - - - - - maven-deploy-plugin - 3.1.1 - - - default-deploy - deploy - - deploy - - - - - - maven-site-plugin - 3.12.1 - - - default-site - site - - site - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-project-info-reports-plugin - - - - - - default-deploy - site-deploy - - deploy - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-project-info-reports-plugin - - - - - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-project-info-reports-plugin - - - - - - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - maven-javadoc-plugin - - - - diff --git a/gradle/catalog/gradle/wrapper/gradle-wrapper.jar b/gradle/catalog/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..d64cd4917707c1f8861d8cb53dd15194d4248596 GIT binary patch literal 43462 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 literal 0 HcmV?d00001 diff --git a/gradle/catalog/gradle/wrapper/gradle-wrapper.properties b/gradle/catalog/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b82aa23 --- /dev/null +++ b/gradle/catalog/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradle/catalog/gradlew b/gradle/catalog/gradlew new file mode 100755 index 0000000..1aa94a4 --- /dev/null +++ b/gradle/catalog/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradle/catalog/gradlew.bat b/gradle/catalog/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradle/catalog/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/gradle/enforcer/.gitattributes b/gradle/enforcer/.gitattributes new file mode 100644 index 0000000..097f9f9 --- /dev/null +++ b/gradle/enforcer/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/gradle/enforcer/.gitignore b/gradle/enforcer/.gitignore new file mode 100644 index 0000000..1b6985c --- /dev/null +++ b/gradle/enforcer/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/gradle/enforcer/build.gradle.kts b/gradle/enforcer/build.gradle.kts new file mode 100644 index 0000000..bd68245 --- /dev/null +++ b/gradle/enforcer/build.gradle.kts @@ -0,0 +1,63 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Gradle plugin project to get you started. + * For more details on writing Custom Plugins, please refer to https://docs.gradle.org/8.6/userguide/custom_plugins.html in the Gradle documentation. + * This project uses @Incubating APIs which are subject to change. + */ + +plugins { + // Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins + `java-gradle-plugin` + + // Apply the Kotlin JVM plugin to add support for Kotlin. + alias(libs.plugins.jvm) +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +testing { + suites { + // Configure the built-in test suite + val test by getting(JvmTestSuite::class) { + // Use Kotlin Test test framework + useKotlinTest("1.9.20") + } + + // Create a new test suite + val functionalTest by registering(JvmTestSuite::class) { + // Use Kotlin Test test framework + useKotlinTest("1.9.20") + + dependencies { + // functionalTest test suite depends on the production code in tests + implementation(project()) + } + + targets { + all { + // This test suite should run after the built-in test suite has run its tests + testTask.configure { shouldRunAfter(test) } + } + } + } + } +} + +gradlePlugin { + // Define the plugin + val greeting by plugins.creating { + id = "org.example.greeting" + implementationClass = "org.example.EnforcerPlugin" + } +} + +gradlePlugin.testSourceSets.add(sourceSets["functionalTest"]) + +tasks.named("check") { + // Include functionalTest as part of the check lifecycle + dependsOn(testing.suites.named("functionalTest")) +} diff --git a/gradle/enforcer/gradle.properties b/gradle/enforcer/gradle.properties new file mode 100644 index 0000000..18f452c --- /dev/null +++ b/gradle/enforcer/gradle.properties @@ -0,0 +1,6 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties + +org.gradle.parallel=true +org.gradle.caching=true + diff --git a/gradle/enforcer/gradle/libs.versions.toml b/gradle/enforcer/gradle/libs.versions.toml new file mode 100644 index 0000000..387b04d --- /dev/null +++ b/gradle/enforcer/gradle/libs.versions.toml @@ -0,0 +1,5 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format + +[plugins] +jvm = { id = "org.jetbrains.kotlin.jvm", version = "1.9.20" } diff --git a/gradle/enforcer/gradle/wrapper/gradle-wrapper.jar b/gradle/enforcer/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..d64cd4917707c1f8861d8cb53dd15194d4248596 GIT binary patch literal 43462 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 literal 0 HcmV?d00001 diff --git a/gradle/enforcer/gradle/wrapper/gradle-wrapper.properties b/gradle/enforcer/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..a80b22c --- /dev/null +++ b/gradle/enforcer/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradle/enforcer/gradlew b/gradle/enforcer/gradlew new file mode 100755 index 0000000..1aa94a4 --- /dev/null +++ b/gradle/enforcer/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradle/enforcer/gradlew.bat b/gradle/enforcer/gradlew.bat new file mode 100644 index 0000000..25da30d --- /dev/null +++ b/gradle/enforcer/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt b/gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt new file mode 100644 index 0000000..a4e5eb8 --- /dev/null +++ b/gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt @@ -0,0 +1,43 @@ +/* + * This Kotlin source file was generated by the Gradle 'init' task. + */ +package org.example + +import java.io.File +import kotlin.test.assertTrue +import kotlin.test.Test +import org.gradle.testkit.runner.GradleRunner +import org.junit.jupiter.api.io.TempDir + +/** + * A simple functional test for the 'org.example.greeting' plugin. + */ +class EnforcerPluginFunctionalTest { + + @field:TempDir + lateinit var projectDir: File + + private val buildFile by lazy { projectDir.resolve("build.gradle") } + private val settingsFile by lazy { projectDir.resolve("settings.gradle") } + + @Test fun `can run task`() { + // Set up the test build + settingsFile.writeText("") + buildFile.writeText(""" + plugins { + id('org.example.greeting') + } + """.trimIndent()) + + // Run the build + val runner = GradleRunner.create() + runner.forwardOutput() + runner.withPluginClasspath() + runner.withArguments("greeting") + runner.withProjectDir(projectDir) + val result = runner.build() + + // Verify the result + assertTrue(result.output.contains("Hello from plugin 'org.example.greeting'")) + } +} diff --git a/gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt b/gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt new file mode 100644 index 0000000..666de90 --- /dev/null +++ b/gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt @@ -0,0 +1,22 @@ +/* + * This Kotlin source file was generated by the Gradle 'init' task. + */ +package org.example + +import org.gradle.api.Project +import org.gradle.api.Plugin + +/** + * A simple 'hello world' plugin. + */ +class EnforcerPlugin: Plugin { + override fun apply(project: Project) { + // Register a task +// project.tasks.register("greeting") { task -> +// task.doLast { +// println("Hello from plugin 'org.example.greeting'") +// } +// } +// project.extensions.cr + } +} diff --git a/gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt b/gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt new file mode 100644 index 0000000..cfba71b --- /dev/null +++ b/gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt @@ -0,0 +1,22 @@ +/* + * This Kotlin source file was generated by the Gradle 'init' task. + */ +package org.example + +import org.gradle.testfixtures.ProjectBuilder +import kotlin.test.Test +import kotlin.test.assertNotNull + +/** + * A simple unit test for the 'org.example.greeting' plugin. + */ +class EnforcerPluginTest { + @Test fun `plugin registers task`() { + // Create a test project and apply the plugin + val project = ProjectBuilder.builder().build() + project.plugins.apply("org.example.greeting") + + // Verify the result + assertNotNull(project.tasks.findByName("greeting")) + } +} diff --git a/gradle/gradle.properties b/gradle/gradle.properties new file mode 100644 index 0000000..18f452c --- /dev/null +++ b/gradle/gradle.properties @@ -0,0 +1,6 @@ +# This file was generated by the Gradle 'init' task. +# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties + +org.gradle.parallel=true +org.gradle.caching=true + diff --git a/gradle/gradle/wrapper/gradle-wrapper.properties b/gradle/gradle/wrapper/gradle-wrapper.properties index 17655d0..48c0a02 100644 --- a/gradle/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradle/manifest-dependencies/build.gradle.kts b/gradle/manifest-dependencies/build.gradle.kts new file mode 100644 index 0000000..0080f91 --- /dev/null +++ b/gradle/manifest-dependencies/build.gradle.kts @@ -0,0 +1,65 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Gradle plugin project to get you started. + * For more details on writing Custom Plugins, please refer to https://docs.gradle.org/8.7/userguide/custom_plugins.html in the Gradle documentation. + * This project uses @Incubating APIs which are subject to change. + */ + +plugins { + // Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins + `java-gradle-plugin` + + // Apply the Kotlin JVM plugin to add support for Kotlin. + embeddedKotlin("jvm") + + `kotlin-dsl` +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +testing { + suites { + // Configure the built-in test suite + val test by getting(JvmTestSuite::class) { + // Use Kotlin Test test framework + useKotlinTest(embeddedKotlinVersion) + } + + // Create a new test suite + val functionalTest by registering(JvmTestSuite::class) { + // Use Kotlin Test test framework + useKotlinTest(embeddedKotlinVersion) + + dependencies { + // functionalTest test suite depends on the production code in tests + implementation(project()) + } + + targets { + all { + // This test suite should run after the built-in test suite has run its tests + testTask.configure { shouldRunAfter(test) } + } + } + } + } +} + +gradlePlugin { + // Define the plugin + val greeting by plugins.creating { + id = "org.example.base" + implementationClass = "org.example.GradleBasePlugin" + } +} + +gradlePlugin.testSourceSets.add(sourceSets["functionalTest"]) + +tasks.named("check") { + // Include functionalTest as part of the check lifecycle + dependsOn(testing.suites.named("functionalTest")) +} diff --git a/gradle/manifest-dependencies/settings.gradle.kts b/gradle/manifest-dependencies/settings.gradle.kts new file mode 100644 index 0000000..23cdc1e --- /dev/null +++ b/gradle/manifest-dependencies/settings.gradle.kts @@ -0,0 +1,10 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.7/userguide/multi_project_builds.html in the Gradle documentation. + * This project uses @Incubating APIs which are subject to change. + */ + +rootProject.name = "gradle-manifest-dependencies" +include("plugin") diff --git a/gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt b/gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt new file mode 100644 index 0000000..228c8ff --- /dev/null +++ b/gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt @@ -0,0 +1,43 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.example + +import java.io.File +import kotlin.test.assertTrue +import kotlin.test.Test +import org.gradle.testkit.runner.GradleRunner +import org.junit.jupiter.api.io.TempDir + +/** + * A simple functional test for the 'org.example.greeting' plugin. + */ +class GradleBasePluginFunctionalTest { + + @field:TempDir + lateinit var projectDir: File + + private val buildFile by lazy { projectDir.resolve("build.gradle") } + private val settingsFile by lazy { projectDir.resolve("settings.gradle") } + + @Test fun `can run task`() { + // Set up the test build + settingsFile.writeText("") + buildFile.writeText(""" + plugins { + id('org.example.greeting') + } + """.trimIndent()) + + // Run the build + val runner = GradleRunner.create() + runner.forwardOutput() + runner.withPluginClasspath() + runner.withArguments("greeting") + runner.withProjectDir(projectDir) + val result = runner.build() + + // Verify the result + assertTrue(result.output.contains("Hello from plugin 'org.example.greeting'")) + } +} diff --git a/gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt b/gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt new file mode 100644 index 0000000..7161680 --- /dev/null +++ b/gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt @@ -0,0 +1,37 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.example + +import org.gradle.api.Project +import org.gradle.api.Plugin +import org.gradle.configurationcache.extensions.capitalized +import org.gradle.jvm.tasks.Jar +import org.gradle.kotlin.dsl.attributes +import org.gradle.kotlin.dsl.get +import org.gradle.kotlin.dsl.getByName +import org.gradle.kotlin.dsl.named + +/** + * A simple 'hello world' plugin. + */ +class GradleBasePlugin : Plugin { + override fun apply(project: Project) { + project.tasks.named("jar") { + // https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations + val main = listOf("compileClasspath", "runtimeClasspath") + // val test = listOf("testCompileClasspath", "testRuntimeClasspath") + doFirst { + manifest { + project.configurations.filter { it.name in main }.forEach { c -> + val name = "Dependencies-" + c.name.substringBefore("Classpath").capitalized() + val deps = c.resolvedConfiguration.resolvedArtifacts + .map { a -> a.moduleVersion.id.toString() + a.classifier?.let { ":$it" }.orEmpty() } + .sorted().joinToString(";") + attributes(name to deps) + } + } + } + } + } +} diff --git a/gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt b/gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt new file mode 100644 index 0000000..a0c5077 --- /dev/null +++ b/gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt @@ -0,0 +1,22 @@ +/* + * This source file was generated by the Gradle 'init' task + */ +package org.example + +import org.gradle.testfixtures.ProjectBuilder +import kotlin.test.Test +import kotlin.test.assertNotNull + +/** + * A simple unit test for the 'org.example.greeting' plugin. + */ +class GradleBasePluginTest { + @Test fun `plugin registers task`() { + // Create a test project and apply the plugin + val project = ProjectBuilder.builder().build() + project.plugins.apply("org.example.greeting") + + // Verify the result + assertNotNull(project.tasks.findByName("greeting")) + } +} diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index 8f58774..4e13a3a 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -1,53 +1,76 @@ -import groovy.xml.XmlSlurper -import groovy.xml.slurpersupport.GPathResult -import groovy.xml.slurpersupport.NodeChild -import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude - plugins { `java-platform` publish -// id("org.gradlex.java-ecosystem-capabilities-base") // only rules -// id("org.gradlex.logging-capabilities") // logging extension + // id("org.gradlex.java-ecosystem-capabilities-base") // only rules + // id("org.gradlex.logging-capabilities") // logging extension } group = "org.scijava" version = "0.13" //(effXml / "version").toString() -operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult +//operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult -val effXml = XmlSlurper().parse(projectDir.resolve("eff.xml")) +//val effXml = XmlSlurper().parse(projectDir.resolve("eff.xml")) javaPlatform { allowDependencies() } -val runtimeDeps = listOf("xalan:serializer", "xalan:xalan") +val runtimeDeps = listOf("org.antlr:antlr-runtime", + "xalan:serializer", + "xalan:xalan", + "com.github.vbmacher:java-cup-runtime", + "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime", + "org.jogamp.gluegen:gluegen-rt-main", + "org.jogamp.gluegen:gluegen-rt", + "org.jogamp.joal:joal", + "org.jogamp.jocl:jocl", + "org.jogamp.jogl:jogl-all-main", + "org.jogamp.jogl:jogl-all", + "org.jogamp.jogl:jogl-all-noawt", + "com.nativelibs4java:bridj", + "org.bytedeco:ffmpeg", + "org.bytedeco:hdf5", + "org.bytedeco:leptonica", + "org.bytedeco:openblas", + "org.bytedeco:opencv", + "org.bytedeco:tesseract", + "org.jline:jline-native", + "com.github.jnr:jffi", + "org.jzy3d:jzy3d-native-jogl-awt", + "org.jzy3d:jzy3d-native-jogl-swing") + +val jogampNatives = listOf("org.jogamp.gluegen:gluegen-rt-natives-", + "org.jogamp.jogl:jogl-all-natives-", + "org.jogamp.gluegen:gluegen-rt-natives-", + "org.jogamp.jogl:jogl-all-natives-") dependencies { - val deps = effXml / "dependencyManagement" / "dependencies" + // val deps = effXml / "dependencyManagement" / "dependencies" constraints { - deps.children().forEach { - val node = it!! as NodeChild - val g = node / "groupId" - val a = node / "artifactId" - val v = node / "version" - if ("$g:$a" in runtimeDeps) - runtime("$g:$a:$v") - else - api("$g:$a:$v") - // println("$g:$a:$v") + // deps.children().forEach { + // val node = it!! as NodeChild + // val g = node / "groupId" + // val a = node / "artifactId" + // val v = node / "version" + // } + versionCatalogs.forEach { versionCatalog -> + // println("catalog ${versionCatalog.name}") + versionCatalog.libraryAliases.forEach { lib -> + val dep = versionCatalog.findLibrary(lib).get().get() + val ga = dep.module.run { "$group:$name" } + // println(dep) + if (ga in runtimeDeps || jogampNatives.any { it.startsWith(ga) }) + runtime(dep) //.also { println("runtime($dep)") } + else + api(dep) //.also{ println("api($dep)") } + } } } -// versionCatalogs.forEach { versionCatalog -> -// println("catalog ${versionCatalog.name}") -// versionCatalog.libraryAliases.forEach { -// println(versionCatalog.findLibrary(it).get().get()) -// } -// } -// println(libs.groovy.core.get()) - api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) + // println(libs.my.lib.get()) + // api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) api(platform("jakarta.platform:jakarta.jakartaee-bom:10.0.0")) // api(platform("com.google.api-client:google-api-client-bom:" + libs.com.google.api.client.googleApiClient.get().version)) // api(platform("com.google.api:gax-bom:" + libs.com.google.api.gax.get().version)) diff --git a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts index 1ae16b3..ece9665 100644 --- a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts +++ b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts @@ -7,18 +7,16 @@ publishing { repositories { maven { name = "sciJava" - credentials(PasswordCredentials::class) - url = uri("https://maven.scijava.org/content/repositories/releases") +// credentials(PasswordCredentials::class) +// url = uri("https://maven.scijava.org/content/repositories/releases") + url = uri("repo") } } create("sciJavaPlatform") { from(components["javaPlatform"]) groupId = "org.scijava" - println(groupId) artifactId = "gradle-platform" - println(artifactId) version = "0.13" - println(version) /*pom.withXml { val nodes = Stack() diff --git a/gradle/platform/gradle/wrapper/gradle-wrapper.jar b/gradle/platform/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..d64cd4917707c1f8861d8cb53dd15194d4248596 GIT binary patch literal 43462 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 literal 0 HcmV?d00001 diff --git a/gradle/platform/gradle/wrapper/gradle-wrapper.properties b/gradle/platform/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b82aa23 --- /dev/null +++ b/gradle/platform/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradle/platform/gradlew b/gradle/platform/gradlew new file mode 100755 index 0000000..1aa94a4 --- /dev/null +++ b/gradle/platform/gradlew @@ -0,0 +1,249 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradle/platform/gradlew.bat b/gradle/platform/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradle/platform/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/gradle/platform/settings.gradle.kts b/gradle/platform/settings.gradle.kts index 162f20a..bb66fc7 100644 --- a/gradle/platform/settings.gradle.kts +++ b/gradle/platform/settings.gradle.kts @@ -13,12 +13,15 @@ dependencyResolutionManagement { // repositories { .. } versionCatalogs { - create("libs").from("org.scijava:gradle-catalog") +// create("libs") { +// from("org.scijava:gradle-catalog:0.11") +// library("my-lib", "com.mycompany:mylib:1.2") +// } // maybeCreate("libs").version("groovy", "3.0.9") // maybeCreate("libs").library("groovy-core", "org.codehaus.groovy:groovy:2.4.15") // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." -// create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) + create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) } includeBuild("../catalog") diff --git a/gradle/settings.gradle.kts b/gradle/settings.gradle.kts index 6a0ad4b..2a15aec 100644 --- a/gradle/settings.gradle.kts +++ b/gradle/settings.gradle.kts @@ -5,7 +5,8 @@ rootProject.name = "gradle" includeBuild("catalog") includeBuild("platform") -includeBuild("playground") -includeBuild("enforcer") +includeBuild("manifest-dependencies") +//includeBuild("playground") +//includeBuild("enforcer") enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/pom.xml b/pom.xml index 42bbd59..9e66a61 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,10 @@ + + + + + 4.0.0 @@ -6819,4 +6824,83 @@ + + + + gradle-catalog + + + + gradle/platform + + + + + + org.codehaus.mojo + exec-maven-plugin + + + generate-gradle-catalog + generate-sources + + exec + + + ../gradlew + gradle/catalog + + generateCatalogAsToml + + + + + generate-gradle-platform + generate-sources + + exec + + + ../gradlew + gradle/platform + + generateMetadataFileForSciJavaPlatformPublication + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-gradle-catalog + + package + + + attach-artifact + + + + + gradle/catalog/build/version-catalog/libs.versions.toml + toml + + + gradle/platform/build/publications/sciJavaPlatform/module.json + + module + + + + + + + + + + From 1b5f12f8006daedd7e1beded2f0813865147f838 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Thu, 25 Apr 2024 11:50:55 +0200 Subject: [PATCH 07/22] commented for the moment any bom dependency --- gradle/platform/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts index 4e13a3a..08c00de 100644 --- a/gradle/platform/build.gradle.kts +++ b/gradle/platform/build.gradle.kts @@ -71,7 +71,7 @@ dependencies { // println(libs.my.lib.get()) // api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) - api(platform("jakarta.platform:jakarta.jakartaee-bom:10.0.0")) +// api(platform("jakarta.platform:jakarta.jakartaee-bom:10.0.0")) // api(platform("com.google.api-client:google-api-client-bom:" + libs.com.google.api.client.googleApiClient.get().version)) // api(platform("com.google.api:gax-bom:" + libs.com.google.api.gax.get().version)) // api(platform("com.google.api:gapic-generator-java-bom:" + libs.com.google.api.grpc.protoGoogleCommonProtos.get().version)) From 251fbe566b0d1bcf33a680bec7f4907475b0cb12 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Fri, 26 Apr 2024 12:54:03 +0200 Subject: [PATCH 08/22] playing around with re-adapted early-prototype declarative Gradle --- .idea/compiler.xml | 6 +- .idea/gradle.xml | 44 +++++--- .idea/modules.xml | 1 + .../buildSrc/declarative.buildSrc.main.iml | 8 ++ gradle/declarative/build.gradle.kts | 9 ++ gradle/declarative/buildSrc/build.gradle.kts | 7 ++ .../declarative/buildSrc/settings.gradle.kts | 1 + .../common/ApplicationDependencies.kt | 15 +++ .../common/LibraryDependencies.kt | 19 ++++ .../api/experimental/java/JavaApplication.kt | 11 ++ .../api/experimental/java/JavaLibrary.kt | 22 ++++ .../java/StandaloneJavaApplicationPlugin.kt | 30 +++++ .../java/StandaloneJavaLibraryPlugin.kt | 28 +++++ .../api/experimental/jvm/HasJavaTarget.kt | 13 +++ .../api/experimental/jvm/HasJavaTargets.kt | 18 +++ .../api/experimental/jvm/HasJvmApplication.kt | 23 ++++ .../api/experimental/jvm/HasJvmLibrary.kt | 19 ++++ .../gradle/api/experimental/jvm/JavaTarget.kt | 7 ++ .../api/experimental/jvm/JvmApplication.kt | 6 + .../experimental/jvm/JvmEcosystemPlugin.kt | 15 +++ .../gradle/api/experimental/jvm/JvmLibrary.kt | 9 ++ .../gradle/api/experimental/jvm/JvmTarget.kt | 17 +++ .../experimental/jvm/JvmTargetContainer.kt | 33 ++++++ .../jvm/StandaloneJvmApplicationPlugin.kt | 46 ++++++++ .../jvm/StandaloneJvmLibraryPlugin.kt | 50 +++++++++ .../jvm/internal/JvmPluginSupport.kt | 106 ++++++++++++++++++ .../software/RegistersSoftwareTypes.kt | 37 ++++++ .../internal/plugins/software/SoftwareType.kt | 44 ++++++++ .../dsl/model/annotations/Adding.kt | 22 ++++ .../dsl/model/annotations/Configuring.kt | 22 ++++ .../dsl/model/annotations/Restricted.kt | 8 ++ gradle/declarative/settings.gradle.kts | 6 + gradle/settings.gradle.kts | 1 + 33 files changed, 686 insertions(+), 17 deletions(-) create mode 100644 .idea/modules/declarative/buildSrc/declarative.buildSrc.main.iml create mode 100644 gradle/declarative/build.gradle.kts create mode 100644 gradle/declarative/buildSrc/build.gradle.kts create mode 100644 gradle/declarative/buildSrc/settings.gradle.kts create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/common/ApplicationDependencies.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/common/LibraryDependencies.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/java/JavaApplication.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/java/JavaLibrary.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaApplicationPlugin.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaLibraryPlugin.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTarget.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTargets.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmApplication.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmLibrary.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/JavaTarget.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/JvmApplication.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/JvmEcosystemPlugin.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/JvmLibrary.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTarget.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTargetContainer.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmApplicationPlugin.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmLibraryPlugin.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/experimental/jvm/internal/JvmPluginSupport.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/internal/plugins/software/RegistersSoftwareTypes.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/api/internal/plugins/software/SoftwareType.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Adding.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Configuring.kt create mode 100644 gradle/declarative/buildSrc/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Restricted.kt create mode 100644 gradle/declarative/settings.gradle.kts diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 34d4935..44b2129 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -2,14 +2,12 @@ + + - - - - diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f2b130e..fada239 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,35 +3,53 @@

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 diff --git a/gradle/catalog/gradle/wrapper/gradle-wrapper.properties b/gradle/catalog/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b82aa23..0000000 --- a/gradle/catalog/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradle/catalog/gradlew b/gradle/catalog/gradlew deleted file mode 100755 index 1aa94a4..0000000 --- a/gradle/catalog/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gradle/catalog/gradlew.bat b/gradle/catalog/gradlew.bat deleted file mode 100644 index 93e3f59..0000000 --- a/gradle/catalog/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gradle/catalog/settings.gradle.kts b/gradle/catalog/settings.gradle.kts deleted file mode 100644 index 8d99556..0000000 --- a/gradle/catalog/settings.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html - */ - -rootProject.name = "gradle-catalog" - -enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/declarative-playground/build.gradle.kts b/gradle/declarative-playground/build.gradle.kts deleted file mode 100644 index 060936a..0000000 --- a/gradle/declarative-playground/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - embeddedKotlin("jvm").apply(false) -} - -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/gradle/declarative-playground/java-util/build.gradle.kts b/gradle/declarative-playground/java-util/build.gradle.kts deleted file mode 100644 index bf9a481..0000000 --- a/gradle/declarative-playground/java-util/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - id("org.scijava.library") -} - -javaLibrary { - javaVersion = 11 -} diff --git a/gradle/declarative-playground/java-util/src/main/java/com/example/utils/Utils.java b/gradle/declarative-playground/java-util/src/main/java/com/example/utils/Utils.java deleted file mode 100644 index 56680ea..0000000 --- a/gradle/declarative-playground/java-util/src/main/java/com/example/utils/Utils.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.utils; - -public class Utils { - public String getWelcome() { - return "Welcome to the java-utils library!"; - } -} diff --git a/gradle/declarative-playground/kotlin-jvm-util/build.gradle.kts b/gradle/declarative-playground/kotlin-jvm-util/build.gradle.kts deleted file mode 100644 index cb20a37..0000000 --- a/gradle/declarative-playground/kotlin-jvm-util/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - id("org.scijava.kotlin-library") -} - -kotlinJvmLibrary { - javaVersion = 21 -} \ No newline at end of file diff --git a/gradle/declarative-playground/kotlin-jvm-util/src/main/kotlin/com/example/utils/Utils.kt b/gradle/declarative-playground/kotlin-jvm-util/src/main/kotlin/com/example/utils/Utils.kt deleted file mode 100644 index 0cd7fb6..0000000 --- a/gradle/declarative-playground/kotlin-jvm-util/src/main/kotlin/com/example/utils/Utils.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.utils - -class Utils { - val welcome: String - get() = "Welcome to the kotlin-jvm-utils library!" -} \ No newline at end of file diff --git a/gradle/declarative-playground/settings.gradle.kts b/gradle/declarative-playground/settings.gradle.kts deleted file mode 100644 index ae155b7..0000000 --- a/gradle/declarative-playground/settings.gradle.kts +++ /dev/null @@ -1,17 +0,0 @@ -rootProject.name = "declarative-playground" - -rootDir.list()!!.forEach { - if ("java" in it || "kotlin" in it) - include(it) -} -includeBuild("../declarative") - -dependencyResolutionManagement { - repositories { - mavenCentral() - } -} - -pluginManagement { - repositories { mavenCentral() } -} \ No newline at end of file diff --git a/gradle/declarative-playground/testbed-java-application/build.gradle.kts b/gradle/declarative-playground/testbed-java-application/build.gradle.kts deleted file mode 100644 index 9359064..0000000 --- a/gradle/declarative-playground/testbed-java-application/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -plugins { - id("org.scijava.application") -} - -javaApplication { - javaVersion = 21 - mainClass = "com.example.App" - - dependencies { - implementation(project(":java-util")) - implementation("com.google.guava:guava:32.1.3-jre") - } -} diff --git a/gradle/declarative-playground/testbed-java-application/src/main/java/com/example/App.java b/gradle/declarative-playground/testbed-java-application/src/main/java/com/example/App.java deleted file mode 100644 index 4df6800..0000000 --- a/gradle/declarative-playground/testbed-java-application/src/main/java/com/example/App.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.example; - -import com.example.utils.Utils; -import com.google.common.collect.ImmutableList; - -public class App { - public static void main(String[] args) { - // Verify that Guava is available - ImmutableList.Builder builder = ImmutableList.builder(); - builder.add("Hello from Java " + System.getProperty("java.version")); - - // Verify that the Java library is available - Utils utils = new Utils(); - builder.add(utils.getWelcome()); - - ImmutableList messages = builder.build(); - messages.forEach(System.out::println); - } -} \ No newline at end of file diff --git a/gradle/declarative-playground/testbed-java-library/build.gradle.kts b/gradle/declarative-playground/testbed-java-library/build.gradle.kts deleted file mode 100644 index da3e24b..0000000 --- a/gradle/declarative-playground/testbed-java-library/build.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -plugins { - id("org.scijava.library") -} - -javaLibrary { - javaVersion = 21 - - dependencies { - implementation(project(":java-util")) - implementation("com.google.guava:guava:32.1.3-jre") - } -} diff --git a/gradle/declarative-playground/testbed-java-library/src/main/java/com/example/lib/Library.java b/gradle/declarative-playground/testbed-java-library/src/main/java/com/example/lib/Library.java deleted file mode 100644 index cb4ee33..0000000 --- a/gradle/declarative-playground/testbed-java-library/src/main/java/com/example/lib/Library.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.example.lib; - -import com.example.utils.Utils; -import com.google.common.collect.ImmutableList; - -public class Library { - public Iterable getMessages() { - // Verify that Guava is available - ImmutableList.Builder builder = ImmutableList.builder(); - builder.add("Hello from Java " + System.getProperty("java.version")); - - // Verify that the Java library is available - Utils utils = new Utils(); - builder.add(utils.getWelcome()); - - return builder.build(); - } -} diff --git a/gradle/declarative-playground/testbed-kotlin-jvm-application/build.gradle.kts b/gradle/declarative-playground/testbed-kotlin-jvm-application/build.gradle.kts deleted file mode 100644 index 10dda1b..0000000 --- a/gradle/declarative-playground/testbed-kotlin-jvm-application/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -plugins { - id("org.scijava.kotlin-application") -} - -kotlinJvmApplication { - javaVersion = 21 - mainClass = "com.example.AppKt" - - dependencies { - implementation(project(":kotlin-jvm-util")) - implementation("com.google.guava:guava:32.1.3-jre") - } -} diff --git a/gradle/declarative-playground/testbed-kotlin-jvm-application/src/main/kotlin/com/example/App.kt b/gradle/declarative-playground/testbed-kotlin-jvm-application/src/main/kotlin/com/example/App.kt deleted file mode 100644 index 66721b2..0000000 --- a/gradle/declarative-playground/testbed-kotlin-jvm-application/src/main/kotlin/com/example/App.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.example - -import com.example.utils.Utils -import com.google.common.collect.ImmutableList - -fun main() { - // Verify that Guava is available - val builder = ImmutableList.builder() - builder.add("Hello from Kotlin on JVM ${System.getProperty("java.version")}") - - // Verify that the Kotlin JVM library is available - val utils = Utils() - builder.add(utils.welcome) - - val messages = builder.build() - messages.forEach(::println) -} \ No newline at end of file diff --git a/gradle/declarative/build.gradle.kts b/gradle/declarative/build.gradle.kts deleted file mode 100644 index c61514d..0000000 --- a/gradle/declarative/build.gradle.kts +++ /dev/null @@ -1,63 +0,0 @@ -//import org.gradle.api.experimental.java.javaLibrary - -plugins { - `kotlin-dsl` - id("com.gradle.plugin-publish") version "1.2.1" -} - -repositories { mavenCentral() } - -//javaLibrary { -// javaVersion = 11 -//} - -dependencies { -// implementation(kotlin("multiplatform", embeddedKotlinVersion)) - implementation("org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:$embeddedKotlinVersion") -// implementation(kotlin("jvm")) -} - -gradlePlugin { - plugins { -// create("jvm-library") { -// id = "org.gradle.experimental.jvm-library" -// implementationClass = "org.gradle.api.experimental.jvm.StandaloneJvmLibraryPlugin" -// tags = setOf("declarative-gradle", "java", "jvm") -// } -// create("java-library") { -// id = "org.gradle.experimental.java-library" -// implementationClass = "org.gradle.api.experimental.java.StandaloneJavaLibraryPlugin" -// tags = setOf("declarative-gradle", "java", "jvm") -// } - create("scijava.library") { - id = "org.$name" - implementationClass = "org.scijava.SciJavaLibraryPlugin" - tags = setOf("declarative-gradle", "scijava", "java", "jvm") - } - create("scijava.application") { - id = "org.$name" - implementationClass = "org.scijava.SciJavaApplicationPlugin" - tags = setOf("declarative-gradle", "scijava", "java", "jvm") - } - create("scijava.kotlin-library") { - id = "org.$name" - implementationClass = "org.scijava.SciJavaKotlinLibraryPlugin" - tags = setOf("declarative-gradle", "scijava", "java", "kotlin", "jvm") - } - create("scijava.kotlin-application") { - id = "org.$name" - implementationClass = "org.scijava.SciJavaKotlinApplicationPlugin" - tags = setOf("declarative-gradle", "scijava", "java", "kotlin", "jvm") - } -// create("java-application") { -// id = "org.gradle.experimental.java-application" -// implementationClass = "org.gradle.api.experimental.java.StandaloneJavaApplicationPlugin" -// tags = setOf("declarative-gradle", "java", "jvm") -// } -// create("jvm-ecosystem") { -// id = "org.gradle.experimental.jvm-ecosystem" -// implementationClass = "org.gradle.api.experimental.jvm.JvmEcosystemPlugin" -// tags = setOf("declarative-gradle", "java", "jvm") -// } - } -} diff --git a/gradle/declarative/settings.gradle.kts b/gradle/declarative/settings.gradle.kts deleted file mode 100644 index e4f87df..0000000 --- a/gradle/declarative/settings.gradle.kts +++ /dev/null @@ -1,6 +0,0 @@ -// This is an empty umbrella build including all the component builds. -// This build is not necessarily needed. The component builds work independently. - -rootProject.name = "declarative" - -enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/common/ApplicationDependencies.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/common/ApplicationDependencies.kt deleted file mode 100644 index c1ce39d..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/common/ApplicationDependencies.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.gradle.api.experimental.common - -import org.gradle.api.artifacts.dsl.Dependencies -import org.gradle.api.artifacts.dsl.DependencyCollector -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * The declarative dependencies DSL block for an application. - */ -@Restricted -interface ApplicationDependencies : Dependencies { - val implementation: DependencyCollector - val runtimeOnly: DependencyCollector - val compileOnly: DependencyCollector -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/common/LibraryDependencies.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/common/LibraryDependencies.kt deleted file mode 100644 index 21ed088..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/common/LibraryDependencies.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.gradle.api.experimental.common - -import org.gradle.api.artifacts.dsl.Dependencies -import org.gradle.api.artifacts.dsl.DependencyCollector -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * The declarative dependencies DSL block for a library. - */ -@Restricted -interface LibraryDependencies : Dependencies { - val api: DependencyCollector - val implementation: DependencyCollector - val runtimeOnly: DependencyCollector - val compileOnly: DependencyCollector - // CompileOnlyApi is not included here, since both Android and KMP do not support it. - // Does that mean we should also reconsider if we should support it? Or, should we - // talk to Android and KMP about adding support -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/JavaApplication.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/JavaApplication.kt deleted file mode 100644 index 19fac4d..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/JavaApplication.kt +++ /dev/null @@ -1,13 +0,0 @@ -package org.gradle.api.experimental.java - -import org.gradle.api.experimental.jvm.HasJavaTarget -import org.gradle.api.experimental.jvm.HasJvmApplication -import org.gradle.api.experimental.jvm.HasJvmLibrary -import org.gradle.declarative.dsl.model.annotations.Restricted -import org.scijava.Fine - -/** - * An application implemented using a single version of Java. - */ -@Restricted -interface JavaApplication : HasJavaTarget, HasJvmApplication \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/JavaLibrary.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/JavaLibrary.kt deleted file mode 100644 index 26c3158..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/JavaLibrary.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.gradle.api.experimental.java - -import org.gradle.api.experimental.jvm.HasJavaTarget -import org.gradle.api.experimental.jvm.HasJvmLibrary -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * A library implemented using a single version of Java. - */ -@Restricted -interface JavaLibrary : HasJavaTarget, HasJvmLibrary - -//inline fun javaLibrary(block: JavaLibrary.() -> Unit): JavaLibrary { -// return object : JavaLibrary{ -// override val javaVersion: Property = Property -// override val dependencies: LibraryDependencies -// get() = TODO("Not yet implemented") -// -// }.also(block) -//} \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaApplicationPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaApplicationPlugin.kt deleted file mode 100644 index c518498..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaApplicationPlugin.kt +++ /dev/null @@ -1,36 +0,0 @@ -package org.gradle.api.experimental.java - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport -import org.gradle.api.plugins.ApplicationPlugin -import org.gradle.kotlin.dsl.create -import org.scijava.ValidationApplication - -/** - * Creates a declarative [JavaApplication] DSL model, applies the official Java application plugin, - * and links the declarative model to the official plugin. - */ -abstract class StandaloneJavaApplicationPlugin : Plugin, ValidationApplication { -// @get:SoftwareType(name = "javaApplication", modelPublicType = JavaApplication::class) -// abstract val application: JavaApplication - - override val extensionName = "javaApplication" - - override fun apply(project: Project) { - val application = project.extensions.create(extensionName) - val dslModel = application - - project.plugins.apply(ApplicationPlugin::class.java) - - linkDslModelToPlugin(project, dslModel) - - project.validate() - } - - private fun linkDslModelToPlugin(project: Project, dslModel: JavaApplication) { - JvmPluginSupport.linkJavaVersion(project, dslModel) - JvmPluginSupport.linkApplicationMainClass(project, dslModel) - JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.dependencies) - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaLibraryPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaLibraryPlugin.kt deleted file mode 100644 index 657b697..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/java/StandaloneJavaLibraryPlugin.kt +++ /dev/null @@ -1,35 +0,0 @@ -package org.gradle.api.experimental.java - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport -import org.gradle.api.plugins.JavaLibraryPlugin -import org.gradle.kotlin.dsl.create -import org.scijava.ValidationLibrary - -/** - * Creates a declarative [JavaLibrary] DSL model, applies the official Java library plugin, - * and links the declarative model to the official plugin. - */ -abstract class StandaloneJavaLibraryPlugin : Plugin, ValidationLibrary { - // @get:SoftwareType(name = "javaLibrary", modelPublicType = JavaLibrary::class) - // abstract val library: JavaLibrary - - override val extensionName = "javaLibrary" - - override fun apply(project: Project) { - val javaLibrary = project.extensions.create("javaLibrary") - val dslModel = javaLibrary - - project.plugins.apply(JavaLibraryPlugin::class.java) - - linkDslModelToPlugin(project, dslModel) - - project.validate() - } - - private fun linkDslModelToPlugin(project: Project, dslModel: JavaLibrary) { - JvmPluginSupport.linkJavaVersion(project, dslModel) - JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.dependencies) - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTarget.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTarget.kt deleted file mode 100644 index 5f6b916..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTarget.kt +++ /dev/null @@ -1,13 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.provider.Property -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * A component that is built for a single Java version. - */ -@Restricted -interface HasJavaTarget { - @get:Restricted - val javaVersion: Property -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTargets.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTargets.kt deleted file mode 100644 index aab1357..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJavaTargets.kt +++ /dev/null @@ -1,18 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Action -import org.gradle.api.tasks.Nested -import org.gradle.declarative.dsl.model.annotations.Configuring -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * A component that is built for multiple Java versions. - */ -@Restricted -interface HasJavaTargets { - @get:Nested - val targets: JvmTargetContainer - - @Configuring - fun targets(action: Action) = action.execute(targets) -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmApplication.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmApplication.kt deleted file mode 100644 index c084e9c..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmApplication.kt +++ /dev/null @@ -1,23 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Action -import org.gradle.api.experimental.common.ApplicationDependencies -import org.gradle.api.provider.Property -import org.gradle.api.tasks.Nested -import org.gradle.declarative.dsl.model.annotations.Configuring -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * Represents an application that runs on the JVM. - */ -@Restricted -interface HasJvmApplication { - @get:Restricted - val mainClass: Property - - @get:Nested - val dependencies: ApplicationDependencies - - @Configuring - fun dependencies(action: Action) = action.execute(dependencies) -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmLibrary.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmLibrary.kt deleted file mode 100644 index 8c761d7..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/HasJvmLibrary.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Action -import org.gradle.api.experimental.common.LibraryDependencies -import org.gradle.api.tasks.Nested -import org.gradle.declarative.dsl.model.annotations.Configuring -import org.gradle.declarative.dsl.model.annotations.Restricted -import org.scijava.Fine - -/** - * Represents a library that runs on the JVM. - */ -@Restricted -interface HasJvmLibrary { - @get:Nested - val dependencies: LibraryDependencies - - @Configuring - fun dependencies(action: Action) = action.execute(dependencies) -} \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JavaTarget.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JavaTarget.kt deleted file mode 100644 index 6fc1861..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JavaTarget.kt +++ /dev/null @@ -1,7 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Named - -abstract class JavaTarget(val javaVersion: Int) : JvmTarget, Named { - override fun getName(): String = "java$javaVersion" -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmApplication.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmApplication.kt deleted file mode 100644 index 19ad8d7..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmApplication.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.gradle.api.experimental.jvm - -/** - * An application that runs on the JVM and that is implemented using one or more versions of Java. - */ -interface JvmApplication : HasJavaTargets, HasJvmApplication diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmEcosystemPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmEcosystemPlugin.kt deleted file mode 100644 index f33b20f..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmEcosystemPlugin.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Plugin -import org.gradle.api.experimental.java.StandaloneJavaApplicationPlugin -import org.gradle.api.experimental.java.StandaloneJavaLibraryPlugin -import org.gradle.api.initialization.Settings -import org.gradle.api.internal.plugins.software.RegistersSoftwareTypes - -@RegistersSoftwareTypes(StandaloneJavaApplicationPlugin::class, - StandaloneJavaLibraryPlugin::class, - StandaloneJvmLibraryPlugin::class, - StandaloneJvmApplicationPlugin::class) -class JvmEcosystemPlugin : Plugin { - override fun apply(target: Settings) {} -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmLibrary.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmLibrary.kt deleted file mode 100644 index 2ea9637..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmLibrary.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * A library that runs on the JVM and that is implemented using one or more versions of Java. - */ -@Restricted -interface JvmLibrary : HasJavaTargets, HasJvmLibrary diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTarget.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTarget.kt deleted file mode 100644 index 14ea67e..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTarget.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Action -import org.gradle.api.Named -import org.gradle.api.experimental.common.LibraryDependencies -import org.gradle.api.tasks.Nested -import org.gradle.declarative.dsl.model.annotations.Configuring -import org.gradle.declarative.dsl.model.annotations.Restricted - -@Restricted -interface JvmTarget : Named { - @get:Nested - val dependencies: LibraryDependencies - - @Configuring - fun dependencies(action: Action) = action.execute(dependencies) -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTargetContainer.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTargetContainer.kt deleted file mode 100644 index 2925de7..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/JvmTargetContainer.kt +++ /dev/null @@ -1,33 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Action -import org.gradle.api.internal.CollectionCallbackActionDecorator -import org.gradle.api.internal.DefaultNamedDomainObjectSet -import org.gradle.declarative.dsl.model.annotations.Adding -import org.gradle.declarative.dsl.model.annotations.Restricted -import org.gradle.internal.instantiation.InstantiatorFactory -import org.gradle.internal.reflect.Instantiator -import org.gradle.internal.service.ServiceRegistry -import javax.inject.Inject - -@Restricted -class JvmTargetContainer -@Inject -constructor(instantiator: Instantiator, - instantiatorFactory: InstantiatorFactory, - serviceRegistry: ServiceRegistry, callbackDecorator: CollectionCallbackActionDecorator) - : DefaultNamedDomainObjectSet(JvmTarget::class.java, instantiator, callbackDecorator) { - - private val elementInstantiator: Instantiator = instantiatorFactory.decorateLenient(serviceRegistry) - - @Adding - fun java(version: Int): JvmTarget = java(version) {} - - @Adding - fun java(version: Int, action: Action): JvmTarget { - val element = elementInstantiator.newInstance(JavaTarget::class.java, version) - add(element) - action.execute(element) - return element - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmApplicationPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmApplicationPlugin.kt deleted file mode 100644 index 798b5d6..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmApplicationPlugin.kt +++ /dev/null @@ -1,46 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport.createTargetSourceSet -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport.linkApplicationMainClass -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport.setupCommonSourceSet -import org.gradle.api.internal.plugins.software.SoftwareType -import org.gradle.api.plugins.ApplicationPlugin -import org.gradle.jvm.toolchain.JavaToolchainService -import org.gradle.kotlin.dsl.withType -import javax.inject.Inject - -/** - * Creates a declarative [JvmApplication] DSL model, applies the official Jvm plugin, - * and links the declarative model to the official plugin. - */ -abstract class StandaloneJvmApplicationPlugin : Plugin { - @get:SoftwareType(name = "jvmApplication", modelPublicType = JvmApplication::class) - abstract val jvmApplication: JvmApplication - - override fun apply(project: Project) { - val dslModel = jvmApplication - - project.plugins.apply(ApplicationPlugin::class.java) - - linkDslModelToPlugin(project, dslModel) - } - - @get:Inject - protected abstract val javaToolchainService: JavaToolchainService - - private fun linkDslModelToPlugin(project: Project, dslModel: JvmApplication) { - val commonSources = setupCommonSourceSet(project) - JvmPluginSupport.linkSourceSetToDependencies(project, commonSources, dslModel.dependencies) - - JvmPluginSupport.linkJavaVersion(project, dslModel) - linkApplicationMainClass(project, dslModel) - dslModel.targets.withType().all { - val sourceSet = createTargetSourceSet(project, this, commonSources, javaToolchainService) - // Link dependencies to DSL - JvmPluginSupport.linkSourceSetToDependencies(project, sourceSet, dependencies) - } - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmLibraryPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmLibraryPlugin.kt deleted file mode 100644 index 1e28d54..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/StandaloneJvmLibraryPlugin.kt +++ /dev/null @@ -1,50 +0,0 @@ -package org.gradle.api.experimental.jvm - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport.createTargetSourceSet -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport.setupCommonSourceSet -import org.gradle.api.internal.plugins.software.SoftwareType -import org.gradle.api.plugins.JavaLibraryPlugin -import org.gradle.jvm.toolchain.JavaToolchainService -import org.gradle.kotlin.dsl.get -import org.gradle.kotlin.dsl.withType -import javax.inject.Inject - -/** - * Creates a declarative [JvmLibrary] DSL model, applies the official Jvm plugin, - * and links the declarative model to the official plugin. - */ -abstract class StandaloneJvmLibraryPlugin : Plugin { - @get:SoftwareType(name = "jvmLibrary", modelPublicType = JvmLibrary::class) - abstract val jvmLibrary: JvmLibrary - - override fun apply(project: Project) { - val dslModel = jvmLibrary - - project.plugins.apply(JavaLibraryPlugin::class.java) - - linkDslModelToPlugin(project, dslModel) - } - - @get:Inject - protected abstract val javaToolchainService: JavaToolchainService? - - private fun linkDslModelToPlugin(project: Project, dslModel: JvmLibrary) { - val commonSources = setupCommonSourceSet(project) - JvmPluginSupport.linkSourceSetToDependencies(project, commonSources, dslModel.dependencies) - - JvmPluginSupport.linkJavaVersion(project, dslModel) - - dslModel.targets.withType().all { - val sourceSet = createTargetSourceSet(project, this, commonSources, javaToolchainService!!) - // Link dependencies to DSL - JvmPluginSupport.linkSourceSetToDependencies(project, sourceSet, dependencies) - - // Extend common dependencies - project.configurations[sourceSet.apiConfigurationName] - .extendsFrom(project.configurations[commonSources.apiConfigurationName]) - } - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/internal/JvmPluginSupport.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/internal/JvmPluginSupport.kt deleted file mode 100644 index c902919..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/jvm/internal/JvmPluginSupport.kt +++ /dev/null @@ -1,103 +0,0 @@ -package org.gradle.api.experimental.jvm.internal - -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.experimental.common.ApplicationDependencies -import org.gradle.api.experimental.common.LibraryDependencies -import org.gradle.api.experimental.jvm.HasJavaTarget -import org.gradle.api.experimental.jvm.HasJavaTargets -import org.gradle.api.experimental.jvm.HasJvmApplication -import org.gradle.api.experimental.jvm.JavaTarget -import org.gradle.api.plugins.JavaApplication -import org.gradle.api.plugins.JavaPluginExtension -import org.gradle.api.plugins.internal.JavaPluginHelper -import org.gradle.api.tasks.SourceSet -import org.gradle.api.tasks.compile.JavaCompile -import org.gradle.jvm.toolchain.JavaLanguageVersion -import org.gradle.jvm.toolchain.JavaToolchainService -import org.gradle.kotlin.dsl.* - -object JvmPluginSupport { - fun linkSourceSetToDependencies(project: Project, sourceSet: SourceSet, dependencies: LibraryDependencies) { - project.configurations[sourceSet.implementationConfigurationName] - .dependencies.addAllLater(dependencies.implementation.dependencies) - project.configurations[sourceSet.compileOnlyConfigurationName] - .dependencies.addAllLater(dependencies.compileOnly.dependencies) - project.configurations[sourceSet.runtimeOnlyConfigurationName] - .dependencies.addAllLater(dependencies.runtimeOnly.dependencies) - project.configurations[sourceSet.apiConfigurationName] - .dependencies.addAllLater(dependencies.api.dependencies) - } - - fun linkSourceSetToDependencies(project: Project, sourceSet: SourceSet, dependencies: ApplicationDependencies) { - project.configurations[sourceSet.implementationConfigurationName] - .dependencies.addAllLater(dependencies.implementation.dependencies) - project.configurations[sourceSet.compileOnlyConfigurationName] - .dependencies.addAllLater(dependencies.compileOnly.dependencies) - project.configurations[sourceSet.runtimeOnlyConfigurationName] - .dependencies.addAllLater(dependencies.runtimeOnly.dependencies) - } - - fun linkMainSourceSourceSetDependencies(project: Project, dependencies: LibraryDependencies) { - val java = project.extensions.getByType() - linkSourceSetToDependencies(project, java.sourceSets["main"], dependencies) - } - - fun linkMainSourceSourceSetDependencies(project: Project, dependencies: ApplicationDependencies) { - val java = project.extensions.getByType() - linkSourceSetToDependencies(project, java.sourceSets["main"], dependencies) - } - - fun linkJavaVersion(project: Project, dslModel: HasJavaTarget) { - val java = project.extensions.getByType() - java.toolchain.languageVersion = dslModel.javaVersion.map(JavaLanguageVersion::of) - } - - fun linkJavaVersion(project: Project, dslModel: HasJavaTargets) { - val java = project.extensions.getByType() - java.toolchain.languageVersion = project.provider { JavaLanguageVersion.of(dslModel.targets.withType().minOf(JavaTarget::javaVersion)) } - } - - fun linkApplicationMainClass(project: Project, application: HasJvmApplication) { - val app = project.extensions.getByType() - app.mainClass = application.mainClass - } - - fun setupCommonSourceSet(project: Project): SourceSet { - val commonSources = JavaPluginHelper.getJavaComponent(project).mainFeature.sourceSet - val srcDir = project.layout.projectDirectory.dir("src").dir("common").dir("java") - commonSources.java.setSrcDirs(setOf(srcDir)) - return commonSources - } - - fun createTargetSourceSet(project: Project, - target: JavaTarget, - commonSources: SourceSet, - javaToolchainService: JavaToolchainService): SourceSet { - val java = project.extensions.getByType() - val sourceSet = java.sourceSets.create("java${target.javaVersion}") - java.registerFeature("java" + target.javaVersion) { usingSourceSet(sourceSet) } - - // Link properties - project.tasks.named(sourceSet.compileJavaTaskName) { - javaCompiler = javaToolchainService.compilerFor { languageVersion = JavaLanguageVersion.of(target.javaVersion) } - } - - // Depend on common sources - project.configurations[sourceSet.implementationConfigurationName] - .dependencies += project.dependencies.create(commonSources.output) - - // Extend common dependencies - project.configurations[sourceSet.implementationConfigurationName] - .extendsFrom(project.configurations[commonSources.implementationConfigurationName]) - project.configurations[sourceSet.compileOnlyConfigurationName] - .extendsFrom(project.configurations[commonSources.compileOnlyConfigurationName]) - project.configurations[sourceSet.runtimeOnlyConfigurationName] - .extendsFrom(project.configurations[commonSources.runtimeOnlyConfigurationName]) - - // Assemble includes all targets - project.tasks["assemble"].configure { dependsOn(sourceSet.output) } - - return sourceSet - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kmp/internal/KotlinPluginSupport.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kmp/internal/KotlinPluginSupport.kt deleted file mode 100644 index 8b1c647..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kmp/internal/KotlinPluginSupport.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.gradle.api.experimental.kmp.internal - -import org.gradle.api.Project -import org.gradle.api.Transformer -import org.gradle.api.experimental.jvm.HasJavaTarget -import org.gradle.jvm.toolchain.JavaLanguageVersion -import org.gradle.kotlin.dsl.assign -import org.gradle.kotlin.dsl.getByType -import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension - -object KotlinPluginSupport { - fun linkJavaVersion(project: Project, dslModel: HasJavaTarget) { - val kotlin = project.extensions.getByType() - kotlin.jvmToolchain { languageVersion = dslModel.javaVersion.map(JavaLanguageVersion::of) } - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/KotlinJvmApplication.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/KotlinJvmApplication.kt deleted file mode 100644 index 03e655e..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/KotlinJvmApplication.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.gradle.api.experimental.kotlin - -import org.gradle.api.experimental.jvm.HasJavaTarget -import org.gradle.api.experimental.jvm.HasJvmApplication -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * An application implemented using Kotlin and that targets a single JVM version. - */ -@Restricted -interface KotlinJvmApplication : HasJavaTarget, HasJvmApplication diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/KotlinJvmLibrary.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/KotlinJvmLibrary.kt deleted file mode 100644 index 0f0db9d..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/KotlinJvmLibrary.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.gradle.api.experimental.kotlin - -import org.gradle.api.experimental.jvm.HasJavaTarget -import org.gradle.api.experimental.jvm.HasJvmLibrary -import org.gradle.declarative.dsl.model.annotations.Restricted - -/** - * A library implemented using Kotlin and that targets a single JVM version. - */ -@Restricted -interface KotlinJvmLibrary : HasJavaTarget, HasJvmLibrary diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmApplicationPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmApplicationPlugin.kt deleted file mode 100644 index c29271f..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmApplicationPlugin.kt +++ /dev/null @@ -1,38 +0,0 @@ -package org.gradle.api.experimental.kotlin - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport -import org.gradle.api.experimental.kmp.internal.KotlinPluginSupport -import org.gradle.api.plugins.ApplicationPlugin -import org.gradle.kotlin.dsl.create -import org.scijava.ValidationApplication - -/** - * Creates a declarative [KotlinJvmApplication] DSL model, applies the official Kotlin and application plugin, - * and links the declarative model to the official plugin. - */ -abstract class StandaloneKotlinJvmApplicationPlugin : Plugin, ValidationApplication { -// @get:SoftwareType(name = "kotlinJvmApplication", modelPublicType = KotlinJvmApplication::class) -// abstract val application: KotlinJvmApplication - - override val extensionName = "kotlinJvmApplication" - - override fun apply(project: Project) { - val application = project.extensions.create(extensionName) - val dslModel = application - - project.plugins.apply(ApplicationPlugin::class.java) - project.plugins.apply("org.jetbrains.kotlin.jvm") - - linkDslModelToPlugin(project, dslModel) - - project.validate() - } - - private fun linkDslModelToPlugin(project: Project, dslModel: KotlinJvmApplication) { - KotlinPluginSupport.linkJavaVersion(project, dslModel) - JvmPluginSupport.linkApplicationMainClass(project, dslModel) - JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.dependencies) - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmLibraryPlugin.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmLibraryPlugin.kt deleted file mode 100644 index 9dbb94a..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/experimental/kotlin/StandaloneKotlinJvmLibraryPlugin.kt +++ /dev/null @@ -1,36 +0,0 @@ -package org.gradle.api.experimental.kotlin - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.jvm.internal.JvmPluginSupport.linkMainSourceSourceSetDependencies -import org.gradle.api.experimental.kmp.internal.KotlinPluginSupport.linkJavaVersion -import org.gradle.api.internal.plugins.software.SoftwareType -import org.gradle.kotlin.dsl.create -import org.scijava.ValidationLibrary - -/** - * Creates a declarative [KotlinJvmApplication] DSL model, applies the official Kotlin and application plugin, - * and links the declarative model to the official plugin. - */ -abstract class StandaloneKotlinJvmLibraryPlugin : Plugin, ValidationLibrary { -// @get:SoftwareType(name = "kotlinJvmLibrary", modelPublicType = KotlinJvmLibrary::class) -// abstract val library: KotlinJvmLibrary - - override val extensionName = "kotlinJvmLibrary" - - override fun apply(project: Project) { - val library = project.extensions.create(extensionName) - val dslModel = library - - project.plugins.apply("org.jetbrains.kotlin.jvm") - - linkDslModelToPlugin(project, dslModel) - - project.validate() - } - - private fun linkDslModelToPlugin(project: Project, dslModel: KotlinJvmLibrary) { - linkJavaVersion(project, dslModel) - linkMainSourceSourceSetDependencies(project, dslModel.dependencies) - } -} diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/internal/plugins/software/RegistersSoftwareTypes.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/internal/plugins/software/RegistersSoftwareTypes.kt deleted file mode 100644 index 85690ba..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/internal/plugins/software/RegistersSoftwareTypes.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2024 the original author or authors. - * - * Licensed 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. - */ -package org.gradle.api.internal.plugins.software - -import org.gradle.api.Incubating -import org.gradle.api.Plugin -import org.gradle.api.Project -import kotlin.reflect.KClass - -/** - * Marks a Settings plugin as registering one or more software types. - * - * @since 8.9 - */ -@Incubating -@Target(AnnotationTarget.CLASS) -@Retention(AnnotationRetention.RUNTIME) -annotation class RegistersSoftwareTypes( - /** - * The [Project] plugins that provide the software types. - * - * @since 8.9 - */ - vararg val value: KClass>) diff --git a/gradle/declarative/src/main/kotlin/org/gradle/api/internal/plugins/software/SoftwareType.kt b/gradle/declarative/src/main/kotlin/org/gradle/api/internal/plugins/software/SoftwareType.kt deleted file mode 100644 index 3abc707..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/api/internal/plugins/software/SoftwareType.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2024 the original author or authors. - * - * Licensed 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. - */ -package org.gradle.api.internal.plugins.software - -import org.gradle.api.Incubating -import kotlin.reflect.KClass - -/** - * Marks a method as exposing a software type. This should be used in plugin classes to communicate which software types they provide. - * - * @since 8.9 - */ -@Incubating -@Target(AnnotationTarget.FUNCTION, - AnnotationTarget.PROPERTY_GETTER, - AnnotationTarget.PROPERTY_SETTER) -@Retention(AnnotationRetention.RUNTIME) -annotation class SoftwareType( - /** - * The name of the software type. This will correspond to the DSL element that is exposed to configure the software type. - * - * @since 8.9 - */ - val name: String, - /** - * The model type used to configure the software type. Note that this class should be the same type or a super type of the return type - * of the method that this annotation is applied to. - * - * @since 8.9 - */ - val modelPublicType: KClass<*>) \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Adding.kt b/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Adding.kt deleted file mode 100644 index 65418b5..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Adding.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2024 the original author or authors. - * - * Licensed 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. - */ -package org.gradle.declarative.dsl.model.annotations - -@Target(AnnotationTarget.FUNCTION, - AnnotationTarget.PROPERTY_GETTER, - AnnotationTarget.PROPERTY_SETTER) -@Retention(AnnotationRetention.RUNTIME) -annotation class Adding diff --git a/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Configuring.kt b/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Configuring.kt deleted file mode 100644 index e1e6290..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Configuring.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2024 the original author or authors. - * - * Licensed 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. - */ -package org.gradle.declarative.dsl.model.annotations - -@Target(AnnotationTarget.FUNCTION, - AnnotationTarget.PROPERTY_GETTER, - AnnotationTarget.PROPERTY_SETTER) -@Retention(AnnotationRetention.RUNTIME) -annotation class Configuring(val propertyName: String = "") diff --git a/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Restricted.kt b/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Restricted.kt deleted file mode 100644 index 14fc4f9..0000000 --- a/gradle/declarative/src/main/kotlin/org/gradle/declarative/dsl/model/annotations/Restricted.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.gradle.declarative.dsl.model.annotations - -@Target(AnnotationTarget.CLASS, - AnnotationTarget.FUNCTION, - AnnotationTarget.PROPERTY_GETTER, - AnnotationTarget.PROPERTY_SETTER) -@Retention(AnnotationRetention.RUNTIME) -annotation class Restricted \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaApplicationPlugin.kt b/gradle/declarative/src/main/kotlin/org/scijava/SciJavaApplicationPlugin.kt deleted file mode 100644 index 1cf94fa..0000000 --- a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaApplicationPlugin.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.scijava - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.java.StandaloneJavaApplicationPlugin - -class SciJavaApplicationPlugin : Plugin { - override fun apply(project: Project) { - project.plugins.apply(StandaloneJavaApplicationPlugin::class.java) - } -} \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaKotlinApplicationPlugin.kt b/gradle/declarative/src/main/kotlin/org/scijava/SciJavaKotlinApplicationPlugin.kt deleted file mode 100644 index 94bf230..0000000 --- a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaKotlinApplicationPlugin.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.scijava - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.java.StandaloneJavaApplicationPlugin -import org.gradle.api.experimental.kotlin.StandaloneKotlinJvmApplicationPlugin - -class SciJavaKotlinApplicationPlugin : Plugin { - override fun apply(project: Project) { - project.plugins.apply(StandaloneKotlinJvmApplicationPlugin::class.java) - } -} \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaKotlinLibraryPlugin.kt b/gradle/declarative/src/main/kotlin/org/scijava/SciJavaKotlinLibraryPlugin.kt deleted file mode 100644 index 882cc64..0000000 --- a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaKotlinLibraryPlugin.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.scijava - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.java.StandaloneJavaLibraryPlugin -import org.gradle.api.experimental.kotlin.StandaloneKotlinJvmLibraryPlugin - -class SciJavaKotlinLibraryPlugin : Plugin { - override fun apply(project: Project) { - project.plugins.apply(StandaloneKotlinJvmLibraryPlugin::class.java) - } -} \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaLibraryPlugin.kt b/gradle/declarative/src/main/kotlin/org/scijava/SciJavaLibraryPlugin.kt deleted file mode 100644 index ebbc1a8..0000000 --- a/gradle/declarative/src/main/kotlin/org/scijava/SciJavaLibraryPlugin.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.scijava - -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.experimental.java.StandaloneJavaLibraryPlugin - -class SciJavaLibraryPlugin : Plugin { - override fun apply(project: Project) { - project.plugins.apply(StandaloneJavaLibraryPlugin::class.java) - } -} \ No newline at end of file diff --git a/gradle/declarative/src/main/kotlin/org/scijava/validation.kt b/gradle/declarative/src/main/kotlin/org/scijava/validation.kt deleted file mode 100644 index 9c2ed9d..0000000 --- a/gradle/declarative/src/main/kotlin/org/scijava/validation.kt +++ /dev/null @@ -1,78 +0,0 @@ -package org.scijava - -import org.gradle.api.Project - -internal interface ValidationApplication : ValidationLibrary -internal interface ExtensionName { - val extensionName: String -} - -internal interface ValidationLibrary : ExtensionName { - - fun Project.validate() { - - val lineIterator = buildFile.readText().lines().filter { it.isNotBlank() && !it.startsWith("//") } - .map(String::trim).toMutableList().listIterator() - while (lineIterator.hasNext()) { - var line = lineIterator.next() - reformatIfNeeded(line, lineIterator) - when (line) { - "plugins {" -> - while (true) { - line = lineIterator.next() - if (line == "}") break - check(line.startsWith("id(\"")) - } - "$extensionName {" -> validate(lineIterator) - else -> error("forbidden code `$line`") - } - } - println("build script verification passed!") - // while (lineIterator.hasPrevious()) - // lineIterator.previous() - // println(lineIterator.asSequence().joinToString("\n")) - } - - private fun reformatIfNeeded(line: String, lineIterator: MutableListIterator) { - if ('}' in line) - if ('{' in line) { // ie `repositories { mavenCentral() }` - check(line.last() == '}') - val second = line.dropLast(1).substringAfter('{') - val first = line.substringBefore('{') - lineIterator.apply { - set("$first {") - add(second) - add("}") - } - } else // ie `whatever}` - lineIterator.apply { - set(line.dropLast(1)) - add("}") - } - } - - infix fun validate(lineIterator: MutableListIterator) { - while (true) { - var line = lineIterator.next() - if (line == "}") break - when { - line.startsWith("javaVersion =") -> Fine - // line.startsWith("repositories {") -> Fine - line.startsWith("dependencies {") -> { - val configurations = listOf("api", "implementation", "runtimeOnly", "compileOnly") - while (true) { - line = lineIterator.next() - if (line == "}") break - check(configurations.any(line::startsWith)) - } - } - else -> when { - line.startsWith("mainClass =") && this is ValidationApplication -> Fine - else -> error("forbidden code in `$line`") - } - } - } - } -} - -typealias Fine = Unit \ No newline at end of file diff --git a/gradle/enforcer/.gitattributes b/gradle/enforcer/.gitattributes deleted file mode 100644 index 097f9f9..0000000 --- a/gradle/enforcer/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# -# https://help.github.com/articles/dealing-with-line-endings/ -# -# Linux start script should use lf -/gradlew text eol=lf - -# These are Windows script files and should use crlf -*.bat text eol=crlf - diff --git a/gradle/enforcer/.gitignore b/gradle/enforcer/.gitignore deleted file mode 100644 index 1b6985c..0000000 --- a/gradle/enforcer/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build diff --git a/gradle/enforcer/build.gradle.kts b/gradle/enforcer/build.gradle.kts deleted file mode 100644 index bd68245..0000000 --- a/gradle/enforcer/build.gradle.kts +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * This generated file contains a sample Gradle plugin project to get you started. - * For more details on writing Custom Plugins, please refer to https://docs.gradle.org/8.6/userguide/custom_plugins.html in the Gradle documentation. - * This project uses @Incubating APIs which are subject to change. - */ - -plugins { - // Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins - `java-gradle-plugin` - - // Apply the Kotlin JVM plugin to add support for Kotlin. - alias(libs.plugins.jvm) -} - -repositories { - // Use Maven Central for resolving dependencies. - mavenCentral() -} - -testing { - suites { - // Configure the built-in test suite - val test by getting(JvmTestSuite::class) { - // Use Kotlin Test test framework - useKotlinTest("1.9.20") - } - - // Create a new test suite - val functionalTest by registering(JvmTestSuite::class) { - // Use Kotlin Test test framework - useKotlinTest("1.9.20") - - dependencies { - // functionalTest test suite depends on the production code in tests - implementation(project()) - } - - targets { - all { - // This test suite should run after the built-in test suite has run its tests - testTask.configure { shouldRunAfter(test) } - } - } - } - } -} - -gradlePlugin { - // Define the plugin - val greeting by plugins.creating { - id = "org.example.greeting" - implementationClass = "org.example.EnforcerPlugin" - } -} - -gradlePlugin.testSourceSets.add(sourceSets["functionalTest"]) - -tasks.named("check") { - // Include functionalTest as part of the check lifecycle - dependsOn(testing.suites.named("functionalTest")) -} diff --git a/gradle/enforcer/gradle.properties b/gradle/enforcer/gradle.properties deleted file mode 100644 index 18f452c..0000000 --- a/gradle/enforcer/gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties - -org.gradle.parallel=true -org.gradle.caching=true - diff --git a/gradle/enforcer/gradle/libs.versions.toml b/gradle/enforcer/gradle/libs.versions.toml deleted file mode 100644 index 387b04d..0000000 --- a/gradle/enforcer/gradle/libs.versions.toml +++ /dev/null @@ -1,5 +0,0 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format - -[plugins] -jvm = { id = "org.jetbrains.kotlin.jvm", version = "1.9.20" } diff --git a/gradle/enforcer/gradle/wrapper/gradle-wrapper.jar b/gradle/enforcer/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index d64cd4917707c1f8861d8cb53dd15194d4248596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43462 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 diff --git a/gradle/enforcer/gradle/wrapper/gradle-wrapper.properties b/gradle/enforcer/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index a80b22c..0000000 --- a/gradle/enforcer/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradle/enforcer/gradlew b/gradle/enforcer/gradlew deleted file mode 100755 index 1aa94a4..0000000 --- a/gradle/enforcer/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gradle/enforcer/gradlew.bat b/gradle/enforcer/gradlew.bat deleted file mode 100644 index 25da30d..0000000 --- a/gradle/enforcer/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gradle/enforcer/settings.gradle.kts b/gradle/enforcer/settings.gradle.kts deleted file mode 100644 index 562e10e..0000000 --- a/gradle/enforcer/settings.gradle.kts +++ /dev/null @@ -1,9 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.6/userguide/multi_project_builds.html in the Gradle documentation. - * This project uses @Incubating APIs which are subject to change. - */ - -rootProject.name = "gradle-enforcer" diff --git a/gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt b/gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt deleted file mode 100644 index a4e5eb8..0000000 --- a/gradle/enforcer/src/functionalTest/kotlin/org/example/EnforcerPluginFunctionalTest.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This Kotlin source file was generated by the Gradle 'init' task. - */ -package org.example - -import java.io.File -import kotlin.test.assertTrue -import kotlin.test.Test -import org.gradle.testkit.runner.GradleRunner -import org.junit.jupiter.api.io.TempDir - -/** - * A simple functional test for the 'org.example.greeting' plugin. - */ -class EnforcerPluginFunctionalTest { - - @field:TempDir - lateinit var projectDir: File - - private val buildFile by lazy { projectDir.resolve("build.gradle") } - private val settingsFile by lazy { projectDir.resolve("settings.gradle") } - - @Test fun `can run task`() { - // Set up the test build - settingsFile.writeText("") - buildFile.writeText(""" - plugins { - id('org.example.greeting') - } - """.trimIndent()) - - // Run the build - val runner = GradleRunner.create() - runner.forwardOutput() - runner.withPluginClasspath() - runner.withArguments("greeting") - runner.withProjectDir(projectDir) - val result = runner.build() - - // Verify the result - assertTrue(result.output.contains("Hello from plugin 'org.example.greeting'")) - } -} diff --git a/gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt b/gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt deleted file mode 100644 index 666de90..0000000 --- a/gradle/enforcer/src/main/kotlin/org/example/EnforcerPlugin.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Kotlin source file was generated by the Gradle 'init' task. - */ -package org.example - -import org.gradle.api.Project -import org.gradle.api.Plugin - -/** - * A simple 'hello world' plugin. - */ -class EnforcerPlugin: Plugin { - override fun apply(project: Project) { - // Register a task -// project.tasks.register("greeting") { task -> -// task.doLast { -// println("Hello from plugin 'org.example.greeting'") -// } -// } -// project.extensions.cr - } -} diff --git a/gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt b/gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt deleted file mode 100644 index cfba71b..0000000 --- a/gradle/enforcer/src/test/kotlin/org/example/EnforcerPluginTest.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This Kotlin source file was generated by the Gradle 'init' task. - */ -package org.example - -import org.gradle.testfixtures.ProjectBuilder -import kotlin.test.Test -import kotlin.test.assertNotNull - -/** - * A simple unit test for the 'org.example.greeting' plugin. - */ -class EnforcerPluginTest { - @Test fun `plugin registers task`() { - // Create a test project and apply the plugin - val project = ProjectBuilder.builder().build() - project.plugins.apply("org.example.greeting") - - // Verify the result - assertNotNull(project.tasks.findByName("greeting")) - } -} diff --git a/gradle/generate-catalog.sh b/gradle/generate-catalog.sh deleted file mode 100755 index 12b067c..0000000 --- a/gradle/generate-catalog.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -dir=$(dirname "$0") -pom="$dir/../pom.xml" -mvn -B -f "$pom" help:effective-pom | - grep -A9999999 '^' > eff.xml -"$dir/catalog.kts" eff.xml -rm eff.xml diff --git a/gradle/gradle.properties b/gradle/gradle.properties deleted file mode 100644 index 18f452c..0000000 --- a/gradle/gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -# This file was generated by the Gradle 'init' task. -# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties - -org.gradle.parallel=true -org.gradle.caching=true - diff --git a/gradle/gradlew.bat b/gradle/gradlew.bat deleted file mode 100644 index 107acd3..0000000 --- a/gradle/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gradle/manifest-dependencies/build.gradle.kts b/gradle/manifest-dependencies/build.gradle.kts deleted file mode 100644 index 0080f91..0000000 --- a/gradle/manifest-dependencies/build.gradle.kts +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * This generated file contains a sample Gradle plugin project to get you started. - * For more details on writing Custom Plugins, please refer to https://docs.gradle.org/8.7/userguide/custom_plugins.html in the Gradle documentation. - * This project uses @Incubating APIs which are subject to change. - */ - -plugins { - // Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins - `java-gradle-plugin` - - // Apply the Kotlin JVM plugin to add support for Kotlin. - embeddedKotlin("jvm") - - `kotlin-dsl` -} - -repositories { - // Use Maven Central for resolving dependencies. - mavenCentral() -} - -testing { - suites { - // Configure the built-in test suite - val test by getting(JvmTestSuite::class) { - // Use Kotlin Test test framework - useKotlinTest(embeddedKotlinVersion) - } - - // Create a new test suite - val functionalTest by registering(JvmTestSuite::class) { - // Use Kotlin Test test framework - useKotlinTest(embeddedKotlinVersion) - - dependencies { - // functionalTest test suite depends on the production code in tests - implementation(project()) - } - - targets { - all { - // This test suite should run after the built-in test suite has run its tests - testTask.configure { shouldRunAfter(test) } - } - } - } - } -} - -gradlePlugin { - // Define the plugin - val greeting by plugins.creating { - id = "org.example.base" - implementationClass = "org.example.GradleBasePlugin" - } -} - -gradlePlugin.testSourceSets.add(sourceSets["functionalTest"]) - -tasks.named("check") { - // Include functionalTest as part of the check lifecycle - dependsOn(testing.suites.named("functionalTest")) -} diff --git a/gradle/manifest-dependencies/settings.gradle.kts b/gradle/manifest-dependencies/settings.gradle.kts deleted file mode 100644 index 23cdc1e..0000000 --- a/gradle/manifest-dependencies/settings.gradle.kts +++ /dev/null @@ -1,10 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.7/userguide/multi_project_builds.html in the Gradle documentation. - * This project uses @Incubating APIs which are subject to change. - */ - -rootProject.name = "gradle-manifest-dependencies" -include("plugin") diff --git a/gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt b/gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt deleted file mode 100644 index 228c8ff..0000000 --- a/gradle/manifest-dependencies/src/functionalTest/kotlin/org/example/GradleBasePluginFunctionalTest.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example - -import java.io.File -import kotlin.test.assertTrue -import kotlin.test.Test -import org.gradle.testkit.runner.GradleRunner -import org.junit.jupiter.api.io.TempDir - -/** - * A simple functional test for the 'org.example.greeting' plugin. - */ -class GradleBasePluginFunctionalTest { - - @field:TempDir - lateinit var projectDir: File - - private val buildFile by lazy { projectDir.resolve("build.gradle") } - private val settingsFile by lazy { projectDir.resolve("settings.gradle") } - - @Test fun `can run task`() { - // Set up the test build - settingsFile.writeText("") - buildFile.writeText(""" - plugins { - id('org.example.greeting') - } - """.trimIndent()) - - // Run the build - val runner = GradleRunner.create() - runner.forwardOutput() - runner.withPluginClasspath() - runner.withArguments("greeting") - runner.withProjectDir(projectDir) - val result = runner.build() - - // Verify the result - assertTrue(result.output.contains("Hello from plugin 'org.example.greeting'")) - } -} diff --git a/gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt b/gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt deleted file mode 100644 index 7161680..0000000 --- a/gradle/manifest-dependencies/src/main/kotlin/org/example/GradleBasePlugin.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example - -import org.gradle.api.Project -import org.gradle.api.Plugin -import org.gradle.configurationcache.extensions.capitalized -import org.gradle.jvm.tasks.Jar -import org.gradle.kotlin.dsl.attributes -import org.gradle.kotlin.dsl.get -import org.gradle.kotlin.dsl.getByName -import org.gradle.kotlin.dsl.named - -/** - * A simple 'hello world' plugin. - */ -class GradleBasePlugin : Plugin { - override fun apply(project: Project) { - project.tasks.named("jar") { - // https://docs.gradle.org/current/userguide/java_plugin.html#tab:configurations - val main = listOf("compileClasspath", "runtimeClasspath") - // val test = listOf("testCompileClasspath", "testRuntimeClasspath") - doFirst { - manifest { - project.configurations.filter { it.name in main }.forEach { c -> - val name = "Dependencies-" + c.name.substringBefore("Classpath").capitalized() - val deps = c.resolvedConfiguration.resolvedArtifacts - .map { a -> a.moduleVersion.id.toString() + a.classifier?.let { ":$it" }.orEmpty() } - .sorted().joinToString(";") - attributes(name to deps) - } - } - } - } - } -} diff --git a/gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt b/gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt deleted file mode 100644 index a0c5077..0000000 --- a/gradle/manifest-dependencies/src/test/kotlin/org/example/GradleBasePluginTest.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This source file was generated by the Gradle 'init' task - */ -package org.example - -import org.gradle.testfixtures.ProjectBuilder -import kotlin.test.Test -import kotlin.test.assertNotNull - -/** - * A simple unit test for the 'org.example.greeting' plugin. - */ -class GradleBasePluginTest { - @Test fun `plugin registers task`() { - // Create a test project and apply the plugin - val project = ProjectBuilder.builder().build() - project.plugins.apply("org.example.greeting") - - // Verify the result - assertNotNull(project.tasks.findByName("greeting")) - } -} diff --git a/gradle/platform/build.gradle.kts b/gradle/platform/build.gradle.kts deleted file mode 100644 index 08c00de..0000000 --- a/gradle/platform/build.gradle.kts +++ /dev/null @@ -1,98 +0,0 @@ -plugins { - `java-platform` - publish - // id("org.gradlex.java-ecosystem-capabilities-base") // only rules - // id("org.gradlex.logging-capabilities") // logging extension -} - -group = "org.scijava" -version = "0.13" //(effXml / "version").toString() - -//operator fun GPathResult.div(child: String) = children().find { (it!! as NodeChild).name() == child } as GPathResult - -//val effXml = XmlSlurper().parse(projectDir.resolve("eff.xml")) - -javaPlatform { - allowDependencies() -} - -val runtimeDeps = listOf("org.antlr:antlr-runtime", - "xalan:serializer", - "xalan:xalan", - "com.github.vbmacher:java-cup-runtime", - "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime", - "org.jogamp.gluegen:gluegen-rt-main", - "org.jogamp.gluegen:gluegen-rt", - "org.jogamp.joal:joal", - "org.jogamp.jocl:jocl", - "org.jogamp.jogl:jogl-all-main", - "org.jogamp.jogl:jogl-all", - "org.jogamp.jogl:jogl-all-noawt", - "com.nativelibs4java:bridj", - "org.bytedeco:ffmpeg", - "org.bytedeco:hdf5", - "org.bytedeco:leptonica", - "org.bytedeco:openblas", - "org.bytedeco:opencv", - "org.bytedeco:tesseract", - "org.jline:jline-native", - "com.github.jnr:jffi", - "org.jzy3d:jzy3d-native-jogl-awt", - "org.jzy3d:jzy3d-native-jogl-swing") - -val jogampNatives = listOf("org.jogamp.gluegen:gluegen-rt-natives-", - "org.jogamp.jogl:jogl-all-natives-", - "org.jogamp.gluegen:gluegen-rt-natives-", - "org.jogamp.jogl:jogl-all-natives-") - -dependencies { - - // val deps = effXml / "dependencyManagement" / "dependencies" - constraints { - // deps.children().forEach { - // val node = it!! as NodeChild - // val g = node / "groupId" - // val a = node / "artifactId" - // val v = node / "version" - // } - versionCatalogs.forEach { versionCatalog -> - // println("catalog ${versionCatalog.name}") - versionCatalog.libraryAliases.forEach { lib -> - val dep = versionCatalog.findLibrary(lib).get().get() - val ga = dep.module.run { "$group:$name" } - // println(dep) - if (ga in runtimeDeps || jogampNatives.any { it.startsWith(ga) }) - runtime(dep) //.also { println("runtime($dep)") } - else - api(dep) //.also{ println("api($dep)") } - } - } - } - - // println(libs.my.lib.get()) - // api(platform("com.fasterxml.jackson:jackson-bom:" + libs.com.fasterxml.jackson.core.jacksonCore.get().version)) -// api(platform("jakarta.platform:jakarta.jakartaee-bom:10.0.0")) - // api(platform("com.google.api-client:google-api-client-bom:" + libs.com.google.api.client.googleApiClient.get().version)) - // api(platform("com.google.api:gax-bom:" + libs.com.google.api.gax.get().version)) - // api(platform("com.google.api:gapic-generator-java-bom:" + libs.com.google.api.grpc.protoGoogleCommonProtos.get().version)) - // api(platform("com.google.auth:google-auth-library-bom:" + libs.com.google.auth.googleAuthLibraryAppengine.get().version)) - // // no google auto-value bom - // api(platform("com.google.cloud:google-cloud-core-bom:" + libs.com.google.cloud.googleCloudCore.get().version)) -} - - - - -tasks { - // named("generatePomFileForSciJavaPlatformPublication") { - // pom.withXml { - // asNode().appendNode("parent").apply { - // appendNode("groupId", group) - // appendNode("artifactId", project.name) - // appendNode("version", version) - // appendNode("relativePath") - // } - // println(asNode().name()) - // } - // } -} \ No newline at end of file diff --git a/gradle/platform/buildSrc/build.gradle.kts b/gradle/platform/buildSrc/build.gradle.kts deleted file mode 100644 index 790460f..0000000 --- a/gradle/platform/buildSrc/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ - -plugins { - `kotlin-dsl` -} - -repositories { - mavenCentral() -// gradlePluginPortal() -} - -//dependencies { -// implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.9.10") -//} \ No newline at end of file diff --git a/gradle/platform/buildSrc/settings.gradle.kts b/gradle/platform/buildSrc/settings.gradle.kts deleted file mode 100644 index 8ae9b3a..0000000 --- a/gradle/platform/buildSrc/settings.gradle.kts +++ /dev/null @@ -1,4 +0,0 @@ -// This is an empty umbrella build including all the component builds. -// This build is not necessarily needed. The component builds work independently. - -rootProject.name = "buildSrc" \ No newline at end of file diff --git a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts b/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts deleted file mode 100644 index ece9665..0000000 --- a/gradle/platform/buildSrc/src/main/kotlin/publish.gradle.kts +++ /dev/null @@ -1,235 +0,0 @@ -plugins { - `maven-publish` -} - -publishing { - publications { - repositories { - maven { - name = "sciJava" -// credentials(PasswordCredentials::class) -// url = uri("https://maven.scijava.org/content/repositories/releases") - url = uri("repo") - } - } - create("sciJavaPlatform") { - from(components["javaPlatform"]) - groupId = "org.scijava" - artifactId = "gradle-platform" - version = "0.13" - /*pom.withXml { - val nodes = Stack() - - nodes += asNode() - fun parent() = nodes.peek() - // Definition of `groupId` is redundant, because it's inherited from the parent - run { - val list = parent().children() as NodeList - require(list.removeIf { (it as Node).name().toString().substringAfter("{http://maven.apache.org/POM/4.0.0}") == "groupId" }) - } - - var i = 1 // 4.0.0 is first - - operator fun String.invoke(vararg values: Any?) { - for (value in values) { - val node = when (value) { - null -> parent().appendNode(this) - else -> parent().appendNode(this, value) - } - if (nodes.size == 1) { // only at `project` level - val list = parent().value() as NodeList - list.removeLast() - list.add(i++, node) - } - } - } - - // operator fun String.compareTo(value: Any): Int { - // return 0 - // } - - operator fun String.invoke(block: () -> Unit) { - val node = parent() - nodes += node.appendNode(this) - block() - if (nodes.size == 2) { // only as `project` child - val list = node.value() as NodeList - list.removeLast() - list.add(i++, parent()) - } - nodes.pop() - } - - // fun comment(text: String) { - // val builder = asString() - // builder.insert(builder.lastIndex - "".length, text.trimMargin()) - // } - - "parent" { - "groupId"(group) - "artifactId"(project.name) - "version"(version) - "relativePath"() - } - // - // - // - i += 3 - "name"("SciJava Parent POM") - "description"("This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins.") - "url"("https://scijava.org/") - "inceptionYear"("2011") - "organization" { - "name"("SciJava") - "url"("https://scijava.org/") - } - "licenses" { - "license" { - "name"("Unlicense") - "url"("https://unlicense.org/") - "distribution"("repo") - } - } - "developers" { - "developer" { - "id"("ctrueden") - "name"("Curtis Rueden") - "url"("https://imagej.net/people/ctrueden") - "roles" { - "role"("founder", "lead", "developer", "debugger", "reviewer", "support", "maintainer") - } - } - } - "contributors" { - operator fun String.minus(id: String) = "contributor" { - "name"(this) - "url"("https://imagej.net/people/$id") - "properties" { "id"(id) } - } - "Mark Hiner" - "hinerm" - "Johannes Schindelin" - "dscho" - "Sébastien Besson" - "sbesson" - "John Bogovic" - "bogovicj" - "Nicolas Chiaruttini" - "NicoKiaru" - "Barry DeZonia" - "bdezonia" - "Richard Domander" - "rimadoma" - "Karl Duderstadt" - "karlduderstadt" - "Jan Eglinger" - "imagejan" - "Gabriel Einsdorf" - "gab1one" - "Tiago Ferreira" - "tferr" - "contributor" { - "name"("David Gault") - "properties" { "id"("dgault") } - } - "Ulrik Günther" - "skalarproduktraum" - "Philipp Hanslovsky" - "hanslovsky" - "Stefan Helfrich" - "stelfrich" - "Cameron Lloyd" - "camlloyd" - "Hadrien Mary" - "hadim" - "Tobias Pietzsch" - "tpietzsch" - "Stephan Preibisch" - "StephanPreibisch" - "Stephan Saalfeld" - "axtimwalde" - "Deborah Schmidt" - "frauzufall" - "Lorenzo Scianatico" - "LoreScianatico" - "Jean - Yves Tinevez" - "tinevez" - "Christian Tischer" - "tischi" - "Gabriella Turek" - "turekg" - "contributor" { - "name"("Giuseppe Barbieri") - "properties" { "id"("elect") } - } - } - "mailingLists" { - "mailingList" { - "name"("SciJava") - "subscribe"("https://groups.google.com/group/scijava") - "unsubscribe"("https://groups.google.com/group/scijava") - "post"("scijava@googlegroups.com") - "archive"("https://groups.google.com/group/scijava") - } - } - "scm" { - "connection"("scm:git:https://github.com/scijava/pom-scijava") - "developerConnection"("scm:git:git@github.com:scijava/pom-scijava") - "tag"("HEAD") - "url"("https://github.com/scijava/pom-scijava") - } - "issueManagement" { - "system"("GitHub Issues") - "url"("https://github.com/scijava/pom-scijava/issues") - } - "ciManagement" { - "system"("GitHub Actions") - "url"("https: //github.com/scijava/pom-scijava/actions") - } - "properties" { - // HACK: The following list of allowed-to-be-duplicated classes - // facilitates intended combinations of artifacts: - // == - // Classes: com.google.inject.* - // Part of: com.google.inject:guice:no_aop - // Also in: org.sonatype.sisu:sisu-guice - // Enables: - // org.apache.maven:maven-core (guice) + - // org.apache.maven.shared:maven-common-artifact-filters (sisu-guice) - // == - // Class: javax.xml.namespace.QName - // Part of: Java Runtime Environment - // Also in: xml-apis:xml-apis, xpp3:xpp3 - // Enables: xml-apis:xml-apis + xpp3:xpp3 - // == - // TEMP: Until scijava/scripting-jruby#5 is resolved. - // Classes: jnr.ffi.* - // Part of: com.github.jnr:jnr-ffi - // Also in: org.jruby:jruby-core - // Enables: org.jruby:jruby-core + org.python:jython-slim (jnr-ffi) - // == - // Classes: org.apache.hadoop.yarn.*.package-info - // Part of: org.apache.hadoop:hadoop-yarn-* - // Enables: - // org.apache.hadoop:hadoop-yarn- + - // org.apache.hadoop:hadoop-yarn- - // == - // Classes: org.apache.spark.unused.UnusedStubClass - // Part of: org.apache.spark:spark-* - // Enables: org.apache.spark:spark-core_2.11 (spark-*) - // == - // Classes: org.eclipse.aether.* - // Part of: - // org.apache.maven.resolver:maven-resolver-api - // org.apache.maven.resolver:maven-resolver-util - // org.apache.maven.shared:maven-artifact-transfer - // org.eclipse.aether:aether-api - // org.eclipse.aether:aether-util - // Enables: dependence on Apache Maven libraries - // == - // Classes: org.hibernate.stat.ConcurrentStatisticsImpl - // Part of: org.hibernate:hibernate-core - // Also in: org.openmicroscopy:omero-blitz - // Enables: - // org.openmicroscopy:omero-blitz + - // org.openmicroscopy:omero-model (hibernate-core) - // == - // Classes: org.junit.runner.Runner - // Part of: junit:junit - // Also in: org.jmockit:jmockit - // Enables: junit:junit + org.jmockit:jmockit - // == - // Classes: org.jzy3d.plot3d.pipelines.* - // Part of: org.jzy3d:jzy3d-core, org.jzy3d:jzy3d-native-jogl-awt - // Enables: org.jzy3d:jzy3d-core + org.jzy3d:jzy3d-native-jogl-awt - "scijava.allowedDuplicateClasses"("com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.*") - // NB: The scijava.allowedDuplicateClasses property above makes it easier to - // append to the list of allowed duplicate classes in downstream projects. - // Simply override the property in your POM with something like this: - // "allowedDuplicateClasses"("\${scijava.allowedDuplicateClasses},com.example.AnotherDuplicate") - "allowedDuplicateClasses"("\${scijava.allowedDuplicateClasses}") - // NB: We override these properties to make the enforcer happy. - // You will need to override them in your POM, too... to valid values. - "license.licenseName"("N/A") - "license.copyrightOwners"("N/A") - } - }*/ - } - } -} \ No newline at end of file diff --git a/gradle/platform/eff.xml b/gradle/platform/eff.xml deleted file mode 100644 index 1bb3642..0000000 --- a/gradle/platform/eff.xml +++ /dev/null @@ -1,6379 +0,0 @@ - - - - - - - - - - - - - - - 4.0.0 - - org.scijava - pom-scijava-base - 19.0.0 - - - org.scijava - pom-scijava - 38.0.0-SNAPSHOT - pom - SciJava Parent POM - This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. - https://scijava.org/ - 2011 - - SciJava - https://scijava.org/ - - - - Unlicense - https://unlicense.org/ - repo - - - - - ctrueden - Curtis Rueden - https://imagej.net/people/ctrueden - - founder - lead - developer - debugger - reviewer - support - maintainer - - - - - - Mark Hiner - https://imagej.net/people/hinerm - - hinerm - - - - Johannes Schindelin - https://imagej.net/people/dscho - - dscho - - - - Sébastien Besson - https://imagej.net/people/sbesson - - sbesson - - - - John Bogovic - https://imagej.net/people/bogovicj - - bogovicj - - - - Nicolas Chiaruttini - https://imagej.net/people/NicoKiaru - - NicoKiaru - - - - Barry DeZonia - https://imagej.net/people/bdezonia - - bdezonia - - - - Richard Domander - https://imagej.net/people/rimadoma - - rimadoma - - - - Karl Duderstadt - https://imagej.net/people/karlduderstadt - - karlduderstadt - - - - Jan Eglinger - https://imagej.net/people/imagejan - - imagejan - - - - Gabriel Einsdorf - https://imagej.net/people/gab1one - - gab1one - - - - Tiago Ferreira - https://imagej.net/people/tferr - - tferr - - - - David Gault - - dgault - - - - Ulrik Günther - https://imagej.net/people/skalarproduktraum - - skalarproduktraum - - - - Philipp Hanslovsky - https://imagej.net/people/hanslovsky - - hanslovsky - - - - Stefan Helfrich - https://imagej.net/people/stelfrich - - stelfrich - - - - Cameron Lloyd - https://imagej.net/people/camlloyd - - camlloyd - - - - Hadrien Mary - https://imagej.net/people/hadim - - hadim - - - - Tobias Pietzsch - https://imagej.net/people/tpietzsch - - tpietzsch - - - - Stephan Preibisch - https://imagej.net/people/StephanPreibisch - - StephanPreibisch - - - - Stephan Saalfeld - https://imagej.net/people/axtimwalde - - axtimwalde - - - - Deborah Schmidt - https://imagej.net/people/frauzufall - - frauzufall - - - - Lorenzo Scianatico - https://imagej.net/people/LoreScianatico - - LoreScianatico - - - - Jean-Yves Tinevez - https://imagej.net/people/tinevez - - tinevez - - - - Christian Tischer - https://imagej.net/people/tischi - - tischi - - - - Gabriella Turek - https://imagej.net/people/turekg - - turekg - - - - - - SciJava - https://groups.google.com/group/scijava - https://groups.google.com/group/scijava - scijava@googlegroups.com - https://groups.google.com/group/scijava - - - - scm:git:https://github.com/scijava/pom-scijava - scm:git:git@github.com:scijava/pom-scijava - https://github.com/scijava/pom-scijava - - - GitHub Issues - https://github.com/scijava/pom-scijava/issues - - - GitHub Actions - https://github.com/scijava/pom-scijava/actions - - - 3.4.2 - 3.4.2 - 2.0.1 - 0.5.4 - 2.0.2 - 2.0.2 - 1.11.0 - 1.18.0 - 3.0.1 - 3.0.1 - 1.2.10 - 2.1.1 - 2.0.2 - 2.0.1 - 3.0.0 - 3.0.6 - 2.0.7 - 2.5.0 - 3.0.3 - 2.1.0 - 2.1.0 - 1.0.6 - 2.1.8 - 2.1.2 - 2.1.2 - 2.3.0 - 2.3.0 - 2.0.4 - 2.0.3 - 2.0.1 - 2.0.8 - 2.1.1 - 3.1.3 - 2.0.1 - 2.0.1 - 2.0.1 - 1.0.2 - 2.3.5 - 1.1.5 - 1.1.1 - 2.0.2 - 2.0.1 - 4.2.2 - 4.2.2 - 2.0.2 - 3.0.1 - 3.0.1 - 2.0.1 - 2.0.0 - 2.0.1 - 3.0.0 - 4.1.2 - 4.1.2 - 2.0.2 - 2.0.1 - 5.0.0 - 5.0.0 - 2.0.1 - 2.0.1 - 2.0.1 - 7.1.1 - 2.1.1 - 1.6.2 - 1.6.2 - 3.0.1 - 2.0.0 - 2.0.0 - 1.1.2 - 1.1.2 - 2.0.2 - 2.0.2 - 2.0.5 - 4.2.1 - 2.0.2 - 5.0.25 - 4.3.4 - 2.0.3 - 2.0.3 - 2.0.1 - 3.1.10 - 1.0.5 - 2.1.1 - 2.1.1 - 2.0.2 - 2.0.2 - 2.1.2 - 2.0.1 - 3.1.9 - 3.1.9 - 1.7-fiji4 - 1.1.4 - 1.1.4 - 2.0.1 - 2.1.1 - 2.1.0 - 25.0.2 - 25.0.2 - 2.0.1 - 2.0.1 - 3.1.4 - 0.1.2 - 1.2.5 - 1.4.0 - 1.2.1 - 3.2.0 - 2.0.1 - 1.2.1 - 1.3.1 - 7.11.1 - 3.3.4 - 1.3.10 - 1.3.10 - 2.0.4 - 2.2.0 - 3.0.4 - 3.0.4 - 2.0.3 - 1.0.3 - 2.0.3 - 2.0.1 - 2.5.0 - 2.5.0 - 2.0.3 - 2.01.4 - <_3D_Blob_Segmentation.version>3.0.2 - <_3D_Objects_Counter.version>2.0.1 - <_3D_Viewer.version>4.0.5 - 1.2.7 - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - 1.10.14 - 1.10.14 - 3.5.3 - 2.7.7 - 3.5.3 - 2.7.7 - 3.5.3 - 4.11.1 - 4.11.1 - 2.26.0 - 2.33 - 2.33 - 9.6 - 9.6 - 9.6 - 9.6 - 9.6 - 1.10.4 - 1.10.4 - 3.3.1 - ${package-guess} - 1.12.667 - 1.12.667 - 1.12.667 - 2.6.13 - 2.6.13 - 0.4.2 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 10.4.13 - 3.1.2 - 1.0.0-beta-34 - 6.2.4 - 9.1.0 - 9.1.0 - 1.0.0 - 7.2.0 - 7.2.0 - 7.2.0 - 2.1.4 - 2.1.4 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 0.7.0 - 3.5.0 - 3.2.0 - 2.0.SP1 - 3.3.0 - 3.3.0 - 1.2.12 - 1.2.12 - 1.2.25 - 3.42.0 - 19.04.1 - 2.2.10 - 2.5.0.1 - 1.8.1.1 - 2.3.0.4 - 2.5.1.4 - 2.5.3.1 - 1.9.0.1 - 0.32.1.1 - 0.32.2.0 - 2.7 - 1.12.667 - 1.12.667 - 5.6.0 - 1.3.1 - 1.11.9 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 3.3.1 - 3.3.0 - 3.4.0 - 2.304 - 3.4 - 1.3.13 - 0.10.4 - 2.2.16 - 3.1.19 - 1.5.5-11 - 0.12.0 - 4.2.2 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.26.0 - 2.43.0 - 2.43.0 - 2.43.0 - 2.34.0 - 1.29.0 - 1.23.0 - 1.23.0 - 1.23.0 - 1.10.4 - 1.10.4 - 2.33.0 - 2.33.0 - 0.127.13 - 1.38.0 - 2.34.0 - 2.10.1 - 2.25.0 - 33.0.0-jre - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 2.8 - 3.23.0 - 3.23.0 - 3.23.0 - 1.7 - 5.5.13.3 - 0.1.55 - 1.1.3 - 5.3 - 5.3 - 5.3 - 0.7.0 - 5.9 - 4.12.0 - 3.8.0 - 1.1.3 - 3.6.5 - 3.6.5 - 1.9.4 - 1.9.4 - 1.6.0 - 1.6.0 - 1.16.1 - 1.16.1 - 3.2.2 - 3.2.2 - 4.4 - 1.26.0 - 1.10.0 - 2.15.1 - 2.15.1 - 2.6 - 2.6 - 3.14.0 - 1.3.0 - 1.3.0 - 3.6.1 - 2.12.0 - 1.11.0 - 0.4.8 - 26 - 26 - 1.9.10 - 11.1.0 - 11.1.0 - 11.1.0 - 11.1.0 - 4.3 - 20151125 - 0.41 - 2.25.0 - 2.25.0 - 3.2.0 - - 0.12.0 - 1.7.0 - 6.1.1-1.5.10 - 2.1.3 - 2.15.0 - 2.304 - 3.4 - 7.2.0 - 7.2.0 - 7.2.0 - 2.23.0 - 1.6.2 - 2.43.0 - 2.43.0 - 2.43.0 - 3.6.5 - 2.5.0 - 2.5.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 2.3.0 - 1.23.0 - 1.23.0 - 1.23.0 - 1.23.0 - 2.33.0 - 2.33.0 - 0.127.13 - 1.38.0 - 2.34.0 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.44.1 - 1.0.3 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 1.5 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 1.62.2 - 1.62.2 - 2.10.1 - 33.0.0-jre - 1.14.3-1.5.10 - 1.8.0.10 - 1.8.0.10 - 4.5.14 - 4.4.16 - 4.5.14 - 0.3.0 - 0.3.0 - 3.6.5 - 1.54h - 1.2.6 - 2.0.4 - 0.2.0 - 6.0.2 - 1.2.1 - 0.7.5 - 0.1.2 - 0.8.1 - 0.7.1 - 1.0.0-5.6 - 1.0.0-5.6 - 0.1.3 - 2.0.0 - 0.1.1 - 0.8.1 - 0.3.1 - 0.3.2 - 0.3.3 - 0.8.4 - 0.2.0 - 1.1.7 - 0.3.1 - 1.0.1 - 1.0.1 - 2.15.0 - 1.54h - 2.15.0 - 0.2.1 - 0.3.1 - 0.14.0 - 1.0.0-beta-17 - 2.0.1 - 2.0.0 - 0.12.0 - 4.0.1 - 0.14.1 - 1.0.0 - 6.3.0 - 1.9.0 - 4.7.5 - 1.62.2 - 0.3.0 - 4.1.1 - 0.6.1 - 0.2.2 - 1.1.1 - 0.3.1 - 0.9.0 - 0.17.1 - 0.46.0 - 5.5.13.3 - 2.5.2 - 2.8 - 1.6.0-scijava-2 - 1.6.0-scijava-2 - 2.21.22 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 2.16.1 - 0.8.11 - 1.1.3 - 1.1.3 - 1.1.3 - 1.0.3 - 1.7.2 - 1.7.2 - 1.6.0-scijava-2 - 1.5.10 - 1.5.10 - - - 8.8.3 - 3.30.2-GA - 2.0.SP1 - 1.1.3 - 1.0.1 - 1.7.36 - 1.0.58 - 2.0.6.1 - 2.4.2 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 1.3.13 - 1.5.4 - 3.4.3 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 4.2.2 - 19.04.1 - 0.14 - 3.0.4 - 3.0.4 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 2.14.6 - 2.14.6 - 2.14.6 - 3.25.1 - 1.37 - 1.37 - 1.37 - 1.49 - 5.14.0 - 5.14.0 - 0.10.4 - 2.2.16 - 3.1.19 - 2.5.0 - 2.0.5 - 2.12.7 - 2.12.7 - 1.7.2 - 2.5.0 - 2.5.0 - 2.5.0 - 1.10.5 - 2.2.1 - 2.80b11 - 2.80b11 - 0.2.1 - 0.1.55 - 1.4 - 20240205 - 0.7.4-scijava - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 4.13.2 - 4.13.2 - 0.2.4 - 0.2.4 - 2.7.3 - 2.7.3 - 1.1.3 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.8.0 - 1.8.0 - 1.8.0 - 5.6.0 - 0.1.17 - 0.3.11 - 3.3.0 - 1.1.10 - 1.84.1-1.5.10 - 1.0.2 - 1.12.0 - 1.12.0 - 1.12.0 - 2.4.0 - N/A - **/script_templates/** - N/A - This POM provides a parent from which participating projects can declare their build configurations. It ensures that projects all use a compatible build environment, including Java version, as well as versions of dependencies and plugins. - 2.20.0 - 2.20.0 - 2.20.0 - 1.2.12 - 1.2.12 - 1.2.12 - 1.8.0 - - 3.1.0 - 3.1.0 - 0.13.1 - 3.6.0 - 3.3.2 - 3.3.2 - 3.8.1 - 3.9.6 - 3.6.1 - 3.1.1 - 3.4.1 - 3.2.5 - 3.1.0 - 1.45 - 3.4.0 - 3.1.1 - 3.6.0 - 3.3.0 - 3.6.3 - 3.11.0 - 3.11.0 - 3.5.0 - 3.0.1 - 3.3.1 - 3.5.2 - 3.12.1 - 3.3.0 - 3.2.5 - yyyy-MM-dd'T'HH:mm:ssZ - 8 - 8 - 8 - 8 - 8 - false - 5.3.6 - 5.3 - 5.3 - 5.3 - 5.3 - 20151125 - 2.2.2 - 1.3.1 - 2.19.0 - 2.19.0 - 1.5.0 - 1.5.0 - 1.5.0 - 1.5.0 - 3.2.7 - 0.2.0 - 4.0.2 - 1.1.1 - 4.0.0 - 2.1.0 - 4.0.2 - 7.0.0 - 1.3.2 - 6.0.1 - 1.2.1 - 1.0.2 - 3.1.3 - 2.5.0 - 1.2.7 - 0.4.8 - 2.2.10 - 2.5.0.1 - 1.8.1.1 - 2.3.0.4 - 2.5.1.4 - 2.5.3.1 - 1.9.0.1 - 0.32.1.1 - 0.32.2.0 - 1.54h - 1.2.6 - 2.0.4 - 0.2.0 - 6.0.2 - 1.2.1 - 0.7.5 - 0.1.2 - 0.8.1 - 0.7.1 - 1.0.0-5.6 - 1.0.0-5.6 - 0.1.3 - 2.0.0 - 0.1.1 - 0.8.1 - 0.3.1 - 0.3.2 - 0.3.3 - 0.8.4 - 0.2.0 - 1.1.7 - 0.3.1 - 1.0.1 - 1.0.1 - 2.15.0 - 0.1.4 - 0.2.1 - 0.3.1 - 0.14.0 - 1.0.0-beta-17 - 2.0.1 - 2.0.0 - 0.12.0 - 4.0.1 - 0.14.1 - 1.0.0 - 6.3.0 - 5.14.0 - 5.14.0 - 1.2.10 - 3.2.7 - 0.2.0 - 3.0.3 - 1.6.13 - 3.9.6 - 3.3 - 45.1.1 - 4.12.0 - 3.8.0 - 1.0.1 - 6.0.21 - 5.3.8 - 6.3.4 - 7.2.0 - 7.2.0 - 7.2.0 - 7.2.0 - 7.2.0 - 0.2.4 - 5.7.2 - 5.6.4 - 5.5.2 - 5.9.0 - 5.6.13 - 5.5.15 - 5.7.5 - 5.6.10 - 0.1.4 - 0.3.26-1.5.10 - 5.9 - 4.9.0-1.5.10 - 4.3.4 - 3.5.3 - 3.5.3 - 4.11.1 - 4.11.1 - 1.10.14 - 1.10.14 - 4.4 - 1.26.0 - 1.10.0 - 3.14.0 - 3.6.1 - 2.12.0 - 1.11.0 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.0.18 - 4.5.14 - 4.4.16 - 4.5.14 - 2.5.2 - 2.21.22 - 2.20.0 - 2.20.0 - 3.9.6 - 3.11.0 - 0.13.1 - 3.3.2 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 2.4.8 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 1.17 - 2.9 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 7.0.18 - 6.1.1-1.5.10 - 1.14.3-1.5.10 - 1.5.10 - 1.5.10 - 1.84.1-1.5.10 - 0.3.26-1.5.10 - 4.9.0-1.5.10 - 5.3.4-1.5.10 - 3.42.0 - 2.2.0 - 4.0.0 - 11.1.0 - 11.1.0 - 11.1.0 - 11.1.0 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 9.4.54.v20240208 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 4.3 - 0.41 - 1.1.5 - 1.0.2 - 4.0.2 - 1.1.1 - 4.0.0 - 2.1.0 - 4.0.2 - 7.0.0 - 1.3.2 - 6.0.1 - 1.2.1 - 3.1.3 - 3.30.2-GA - 2.0.6.1 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.9.22 - 1.8.0 - 1.8.0 - 1.5.4 - 3.4.3 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 1.4.0 - 0.14 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 3.25.1 - 1.49 - 2.0.5 - 2.5.0 - 2.5.0 - 1.7.2 - 1.7.2 - 1.7.2 - 2.5.0 - 2.5.0 - 2.5.0 - 2.5.0 - 1.10.5 - 2.80b11 - 1.0.58 - 2.2.1 - 20240205 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 5.10.2 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 2.2.1 - 1.0.1 - 1.8.0 - 3.1.0 - 2.19.0 - 4.2.1 - 3.3 - 45.1.1 - 1.37 - 1.37 - 5.3.6 - 1.0.1 - 6.0.21 - 5.3.8 - 6.3.4 - 5.7.2 - 5.6.4 - 5.5.2 - 5.9.0 - 5.6.13 - 5.5.15 - 5.7.5 - 5.6.10 - 9.6 - 9.6 - 9.6 - 9.6 - 9.6 - 42.7.2 - 2.7.3 - 0.4.2 - 1.6.0-scijava-2 - 1.6.0-scijava-2 - 2.4.2 - 0.7.4-scijava - 2.2.2 - 2.5.0 - 3.1.0 - 0.1.2 - 2.98.0 - 2.0.3 - 0.1.2 - 0.3.0 - 0.1.0 - 1.0.0-beta-3 - 1.0.6 - 1.0.1 - 0.2.0 - 0.2.4 - 0.3.1 - 0.1.3 - 0.1.4 - 2.0.4 - 1.0.2 - 0.1.7 - 1.0.1 - 1.1.0 - 0.2.1 - 1.0.0 - 0.4.1 - 0.1.6 - 1.0.0 - 0.4.1 - 1.0.0 - 0.3.1 - 1.0.1 - 0.2.1 - 0.5.3 - 0.3.0 - 0.2.3 - 0.3.2 - 1.0.2 - 2.0.8 - 1.6.0-scijava-2 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 0.2.1 - 2.7 - 2.6.0 - 2.6.0 - 3.2.9.RELEASE - 3.2.9.RELEASE - 3.2.9.RELEASE - 1.12.0 - 1.12.0 - 1.12.0 - 1.12.0 - 1.12.0 - 1.6.8 - 1.9 - 2.2 - ${package-guess} - 2.0.1 - 3.0.2 - 3.0.2 - 3.1.0 - 4.7.5 - 2.2.0 - 4.0.0 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 5.2.5 - 42.7.2 - - UTF-8 - UTF-8 - 2.34.0 - 1.29.0 - 1.12.0 - 3.23.0 - 3.23.0 - 3.23.0 - 3.23.0 - 1.7 - 1.11.9 - 3.0.8 - 2.0.1 - sonatype-oss-release - 1.2.25 - 0.28.1 - 0.15.0 - 3.4.0 - 3.0.2 - 2.0.1 - 4.0.5 - 3.4.2 - 2.0.1 - 0.5.4 - 2.0.2 - 1.11.0 - 1.18.0 - 3.0.1 - 3.0.1 - 2.1.1 - 2.0.2 - 2.0.1 - 3.0.0 - 3.0.6 - 2.0.7 - 2.5.0 - 3.0.3 - 2.1.0 - 1.0.6 - 2.1.8 - 2.1.2 - 2.3.0 - 2.0.4 - 2.0.3 - 2.0.1 - 2.0.8 - 2.1.1 - 3.1.3 - 2.0.1 - 2.0.1 - 1.0.2 - 2.3.5 - 1.1.1 - 2.0.2 - 2.0.1 - 4.2.2 - 2.0.2 - 3.0.1 - 3.0.1 - 2.0.1 - 2.0.0 - 2.0.1 - 3.0.0 - 4.1.2 - 4.1.2 - 2.0.2 - 2.0.1 - 5.0.0 - 5.0.0 - 2.0.1 - 2.0.1 - 7.1.1 - 2.1.1 - 3.0.1 - 2.0.0 - 2.0.0 - 1.1.2 - 2.0.2 - 2.0.5 - 2.0.2 - 5.0.25 - 2.0.3 - 2.0.1 - 3.1.10 - 1.0.5 - 2.1.1 - 2.0.2 - 2.1.2 - 2.0.1 - 3.1.9 - 1.7-fiji4 - 1.1.4 - 1.1.4 - 2.0.1 - 2.1.1 - 2.1.0 - 25.0.2 - 2.0.1 - 3.1.4 - 0.1.2 - 1.2.5 - 1.4.0 - 1.2.1 - 3.2.0 - 2.0.1 - 1.2.1 - 1.3.1 - 7.11.1 - 3.3.4 - 1.3.10 - 2.0.4 - 2.2.0 - 3.0.4 - 2.0.3 - 1.0.3 - 2.0.3 - 2.0.1 - 2.5.0 - 2.0.3 - 2.01.4 - 2.6.13 - 10.4.13 - 3.1.2 - 1.0.0-beta-34 - 6.2.4 - 9.1.0 - 1.0.0 - 2.1.4 - 2.1.3 - 2.15.0 - 0.1.17 - 0.3.11 - 1.1.10 - 1.0.2 - 2.0.1 - 3.0.2 - 3.0.8 - 2.0.1 - 2.2.7 - 1.0.1 - 2.0.0 - 2.1.1 - 1.1.2 - 4.1.1 - 0.6.1 - 0.2.2 - 1.1.1 - 0.3.1 - 0.9.0 - 0.17.1 - 0.46.0 - 0.1.2 - 2.1.1 - 2.98.0 - 2.0.3 - 0.1.2 - 0.3.0 - 0.1.0 - 1.0.0-beta-3 - 1.0.6 - 3.0.0 - 1.0.1 - 0.2.0 - 0.2.4 - 0.3.1 - 0.1.3 - 0.1.4 - 2.0.4 - 1.0.2 - 0.1.7 - 1.0.1 - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - scijava - **/script_templates/** - java - org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji - https://javadoc.scijava.org/Java8/ - https://javadoc.scijava.org/JavaFX8/ - [1.8.0-101,) - 8 - 8 - 3.6.3 - natives-linux_64 - linux-x86_64 - natives-linux-amd64 - linux-x86_64 - linux-x86_64 - natives-linux-amd64 - natives-linux-amd64 - natives-linux-amd64 - natives-linux-amd64 - linux-x86_64 - linux-x86_64 - linux-x86_64 - linux-x86_64 - 64 - x86_64 - amd64 - linux - linux - linux - linux - - founder,lead,developer,debugger,reviewer,support,maintainer - 1.1.0 - 0.2.1 - 1.0.0 - 0.4.1 - 0.1.6 - 1.0.0 - 0.4.1 - 1.0.0 - 0.3.1 - 1.0.1 - 0.2.1 - 0.5.3 - 0.3.0 - 0.2.3 - 0.3.2 - 2.6.0 - 2.6.0 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 1.7.36 - 2.7 - 2.2 - 3.10.0.2594 - https://s01.oss.sonatype.org - 2.4.8 - 2.4.8 - 2.2.7 - 3.2.9.RELEASE - 3.2.9.RELEASE - 3.2.9.RELEASE - 3.2.9.RELEASE - 1.0.2 - 1.12.0 - 5.3.4-1.5.10 - 0.12.0 - 1.6.8 - 1.2.0 - 1.0.1 - 2.0.0 - 3.0.3 - all - 2.0.8 - 1.6.0-scijava-2 - 1.7 - 2.16.2 - 1.0 - 2.1.1 - 3.9.6 - 3.9.6 - 2.9 - 1.9 - 1.1.2 - 1.5.5-11 - - - - - org.scijava - batch-processor - 0.4.2 - - - org.scijava - minimaven - 2.2.2 - - - org.scijava - native-lib-loader - 2.5.0 - - - org.scijava - parsington - 3.1.0 - - - org.scijava - scijava-cache - 0.1.2 - - - org.scijava - scijava-common - 2.98.0 - - - org.scijava - scijava-config - 2.0.3 - - - org.scijava - scijava-grab - 0.1.2 - - - org.scijava - scijava-io-http - 0.3.0 - - - org.scijava - scijava-java3d - 0.1.0 - - - org.scijava - scijava-listeners - 1.0.0-beta-3 - - - org.scijava - scijava-log-slf4j - 1.0.6 - - - org.scijava - scijava-optional - 1.0.1 - - - org.scijava - scijava-plot - 0.2.0 - - - org.scijava - scijava-plugins-commands - 0.2.4 - - - org.scijava - scijava-plugins-platforms - 0.3.1 - - - org.scijava - scijava-plugins-text-markdown - 0.1.3 - - - org.scijava - scijava-plugins-text-plain - 0.1.4 - - - org.scijava - scijava-search - 2.0.4 - - - org.scijava - scijava-table - 1.0.2 - - - org.scijava - scijava-ui-awt - 0.1.7 - - - org.scijava - scijava-ui-swing - 1.0.1 - - - org.scijava - script-editor - 1.0.0 - - - org.scijava - script-editor-jython - 1.1.0 - - - org.scijava - script-editor-scala - 0.2.1 - - - org.scijava - scripting-beanshell - 0.4.1 - - - org.scijava - scripting-clojure - 0.1.6 - - - org.scijava - scripting-groovy - 1.0.0 - - - org.scijava - scripting-java - 0.4.1 - - - org.scijava - scripting-javascript - 1.0.0 - - - org.scijava - scripting-jruby - 0.3.1 - - - org.scijava - scripting-jython - 1.0.1 - - - org.scijava - scripting-kotlin - 0.2.1 - - - org.scijava - scripting-matlab - 0.5.3 - - - org.scijava - scripting-python - 0.3.0 - - - org.scijava - scripting-renjin - 0.2.3 - - - org.scijava - scripting-scala - 0.3.2 - - - org.scijava - swing-checkbox-tree - 1.0.2 - - - org.scijava - ui-behaviour - 2.0.8 - - - net.imagej - imagej - 2.15.0 - - - net.imagej - ij - 1.54h - - - com.sun - tools - - - - - net.imagej - ij1-patcher - 1.2.6 - - - net.imagej - imagej-common - 2.0.4 - - - net.imagej - imagej-deprecated - 0.2.0 - - - net.imagej - imagej-launcher - 6.0.2 - - - net.imagej - imagej-legacy - 1.2.1 - - - net.imagej - imagej-matlab - 0.7.5 - - - net.imagej - imagej-mesh - 0.8.1 - - - net.imagej - imagej-mesh-io - 0.1.2 - - - net.imagej - imagej-notebook - 0.7.1 - - - net.imagej - imagej-omero - 1.0.0-5.6 - - - net.imagej - imagej-omero-legacy - 1.0.0-5.6 - - - net.imagej - imagej-opencv - 0.1.3 - - - net.imagej - imagej-ops - 2.0.0 - - - net.imagej - imagej-plugins-batch - 0.1.1 - - - net.imagej - imagej-plugins-commands - 0.8.1 - - - net.imagej - imagej-plugins-tools - 0.3.1 - - - net.imagej - imagej-plugins-uploader-ssh - 0.3.2 - - - net.imagej - imagej-plugins-uploader-webdav - 0.3.3 - - - net.imagej - imagej-scripting - 0.8.4 - - - net.imagej - imagej-server - 0.2.0 - - - net.imagej - imagej-tensorflow - 1.1.7 - - - net.imagej - imagej-ui-awt - 0.3.1 - - - net.imagej - imagej-ui-swing - 1.0.1 - - - net.imagej - imagej-updater - 1.0.1 - - - net.imagej - op-finder - 0.1.4 - - - net.imglib2 - imglib2 - 6.3.0 - - - net.imglib2 - imglib2-algorithm - 0.14.0 - - - net.imglib2 - imglib2-algorithm-fft - 0.2.1 - - - net.imglib2 - imglib2-algorithm-gpl - 0.3.1 - - - net.imglib2 - imglib2-cache - 1.0.0-beta-17 - - - net.imglib2 - imglib2-ij - 2.0.1 - - - net.imglib2 - imglib2-imglyb - 2.0.0 - - - net.imglib2 - imglib2-realtransform - 4.0.1 - - - net.imglib2 - imglib2-roi - 0.14.1 - - - net.imglib2 - imglib2-unsafe - 1.0.0 - - - io.scif - scifio - 0.46.0 - - - io.scif - scifio-bf-compat - 4.1.1 - - - io.scif - scifio-cli - 0.6.1 - - - io.scif - scifio-hdf5 - 0.2.2 - - - io.scif - scifio-jai-imageio - 1.1.1 - - - io.scif - scifio-labeling - 0.3.1 - - - io.scif - scifio-lifesci - 0.9.0 - - - io.scif - scifio-ome-xml - 0.17.1 - - - sc.fiji - fiji - 2.15.0 - - - sc.fiji - 3D_Blob_Segmentation - 3.0.2 - - - sc.fiji - 3D_Objects_Counter - 2.0.1 - - - sc.fiji - 3D_Viewer - 4.0.5 - - - sc.fiji - AnalyzeSkeleton_ - 3.4.2 - - - sc.fiji - Anisotropic_Diffusion_2D - 2.0.1 - - - sc.fiji - Archipelago_Plugins - 0.5.4 - - - sc.fiji - Arrow_ - 2.0.2 - - - sc.fiji - Auto_Local_Threshold - 1.11.0 - - - sc.fiji - Auto_Threshold - 1.18.0 - - - sc.fiji - BalloonSegmentation_ - 3.0.1 - - - sc.fiji - Bug_Submitter - 2.1.1 - - - sc.fiji - CPU_Meter - 2.0.2 - - - sc.fiji - Calculator_Plus - 2.0.1 - - - sc.fiji - Cell_Counter - 3.0.0 - - - sc.fiji - Colocalisation_Analysis - 3.0.6 - - - sc.fiji - Color_Histogram - 2.0.7 - - - sc.fiji - Color_Inspector_3D - 2.5.0 - - - sc.fiji - Colour_Deconvolution - 3.0.3 - - - sc.fiji - CorrectBleach_ - 2.1.0 - - - sc.fiji - Correct_3D_Drift - 1.0.6 - - - sc.fiji - Descriptor_based_registration - 2.1.8 - - - sc.fiji - Dichromacy_ - 2.1.2 - - - sc.fiji - Directionality_ - 2.3.0 - - - sc.fiji - FS_Align_TrakEM2 - 2.0.4 - - - sc.fiji - Feature_Detection - 2.0.3 - - - sc.fiji - Fiji_Archipelago - 2.0.1 - - - sc.fiji - Fiji_Developer - 2.0.8 - - - sc.fiji - Fiji_Package_Maker - 2.1.1 - - - sc.fiji - Fiji_Plugins - 3.1.3 - - - sc.fiji - FilamentDetector - 2.0.1 - - - sc.fiji - FlowJ_ - 2.0.1 - - - sc.fiji - Graph_Cut - 1.0.2 - - - sc.fiji - Gray_Morphology - 2.3.5 - - - org.janelia - H5J_Loader_Plugin - 1.1.5 - - - sc.fiji - HDF5_Vibez - 1.1.1 - - - sc.fiji - Helmholtz_Analysis - 2.0.2 - - - sc.fiji - IJ_Robot - 2.0.1 - - - sc.fiji - IO_ - 4.2.2 - - - sc.fiji - Image_5D - 2.0.2 - - - sc.fiji - Image_Expression_Parser - 3.0.1 - - - sc.fiji - Interactive_3D_Surface_Plot - 3.0.1 - - - sc.fiji - IsoData_Classifier - 2.0.1 - - - sc.fiji - Kappa - 2.0.0 - - - sc.fiji - Kuwahara_Filter - 2.0.1 - - - sc.fiji - KymographBuilder - 3.0.0 - - - sc.fiji - LSM_Reader - 4.1.2 - - - sc.fiji - LSM_Toolbox - 4.1.2 - - - sc.fiji - Lasso_and_Blow_Tool - 2.0.2 - - - sc.fiji - Linear_Kuwahara - 2.0.1 - - - sc.fiji - LocalThickness_ - 5.0.0 - - - sc.fiji - MTrack2_ - 2.0.1 - - - sc.fiji - M_I_P - 2.0.1 - - - sc.fiji - Manual_Tracking - 2.1.1 - - - sc.fiji - Multi_Kymograph - 3.0.1 - - - sc.fiji - OMEVisual - 2.0.0 - - - sc.fiji - PIV_analyser - 2.0.0 - - - sc.fiji - QuickPALM_ - 1.1.2 - - - sc.fiji - RATS_ - 2.0.2 - - - sc.fiji - Reconstruct_Reader - 2.0.5 - - - sc.fiji - SPIM_Opener - 2.0.2 - - - sc.fiji - SPIM_Registration - 5.0.25 - - - sc.fiji - Samples_ - 2.0.3 - - - sc.fiji - Series_Labeler - 2.0.1 - - - sc.fiji - Siox_Segmentation - 1.0.5 - - - sc.fiji - Skeletonize3D_ - 2.1.1 - - - sc.fiji - SplineDeformationGenerator_ - 2.0.2 - - - sc.fiji - Stack_Manipulation - 2.1.2 - - - sc.fiji - Statistical_Region_Merging - 2.0.1 - - - sc.fiji - Stitching_ - 3.1.9 - - - sc.fiji - Sync_Win - 1.7-fiji4 - - - sc.fiji - Thread_Killer - 2.0.1 - - - sc.fiji - Time_Lapse - 2.1.1 - - - sc.fiji - Time_Stamper - 2.1.0 - - - sc.fiji - ToAST_ - 25.0.2 - - - sc.fiji - TopoJ_ - 2.0.1 - - - sc.fiji - Trainable_Segmentation - 3.3.4 - - - sc.fiji - TrakEM2_Archipelago - 2.0.4 - - - sc.fiji - VIB-lib - 2.2.0 - - - sc.fiji - VIB_ - 3.0.4 - - - sc.fiji - Vaa3d_Reader - 2.0.3 - - - sc.fiji - Vaa3d_Writer - 1.0.3 - - - sc.fiji - Video_Editing - 2.0.1 - - - sc.fiji - View5D_ - 2.5.0 - - - sc.fiji - Volume_Calculator - 2.0.3 - - - sc.fiji - Volume_Viewer - 2.01.4 - - - sc.fiji - bUnwarpJ_ - 2.6.13 - - - sc.fiji - bij - 1.0.0 - - - sc.fiji - blockmatching_ - 2.1.4 - - - sc.fiji - fiji-lib - 2.1.3 - - - sc.fiji - legacy-imglib1 - 1.1.10 - - - sc.fiji - level_sets - 1.0.2 - - - sc.fiji - pal-optimization - 2.0.1 - - - sc.fiji - panorama_ - 3.0.2 - - - sc.fiji - register_virtual_stack_slices - 3.0.8 - - - sc.fiji - registration_3d - 2.0.1 - - - sc.fiji - weave_jy2java - 2.1.1 - - - jitk - jitk-tps - 3.0.4 - - - sc.fiji - bigwarp_fiji - 9.1.0 - - - com.googlecode.efficient-java-matrix-library - ejml - - - - - mpicbg - mpicbg - 1.5.0 - - - mpicbg - mpicbg_ - 1.5.0 - - - sc.fiji - trakem2_tps - 2.0.0 - - - sc.fiji - z_spacing - 1.1.2 - - - sc.fiji - bigdataviewer-core - 10.4.13 - - - sc.fiji - bigdataviewer-server - 3.1.2 - - - sc.fiji - bigdataviewer-vistools - 1.0.0-beta-34 - - - sc.fiji - bigdataviewer_fiji - 6.2.4 - - - sc.fiji - spim_data - 2.2.7 - - - sc.fiji - TrackMate - 7.11.1 - - - sc.fiji - TrackMate-Cellpose - 0.1.2 - - - sc.fiji - TrackMate-CSVImporter - 3.1.4 - - - sc.fiji - TrackMate-ExTrack - 1.2.5 - - - sc.fiji - TrackMate-Ilastik - 1.4.0 - - - sc.fiji - TrackMate-MorphoLibJ - 1.2.1 - - - sc.fiji - TrackMate-Oneat - 3.2.0 - - - sc.fiji - TrackMate-Skeleton - 2.0.1 - - - sc.fiji - TrackMate-StarDist - 1.2.1 - - - sc.fiji - TrackMate-Weka - 1.3.1 - - - sc.fiji - T2-NIT - 1.1.4 - - - sc.fiji - T2-TreelineGraph - 1.1.4 - - - sc.fiji - TrakEM2_ - 1.3.10 - - - sc.fiji - VectorString - 2.0.3 - - - sc.fiji - trakem2-transform - 1.0.1 - - - net.imglib2 - imglib2-label-multisets - 0.12.0 - - - org.janelia.saalfeldlab - n5 - 3.1.3 - - - org.janelia.saalfeldlab - n5-aws-s3 - 4.0.2 - - - org.janelia.saalfeldlab - n5-blosc - 1.1.1 - - - org.janelia.saalfeldlab - n5-google-cloud - 4.0.0 - - - org.janelia.saalfeldlab - n5-hdf5 - 2.1.0 - - - org.janelia.saalfeldlab - n5-ij - 4.0.2 - - - org.janelia.saalfeldlab - n5-imglib2 - 7.0.0 - - - org.janelia.saalfeldlab - n5-universe - 1.3.2 - - - org.janelia.saalfeldlab - n5-viewer_fiji - 6.0.1 - - - org.janelia.saalfeldlab - n5-zarr - 1.2.1 - - - fr.inra.ijpb - MorphoLibJ_ - 1.6.2 - - - net.haesleinhuepf - clij_ - 1.9.0.1 - - - net.haesleinhuepf - clij-core - 1.8.1.1 - - - net.haesleinhuepf - clij-coremem - 2.3.0.4 - - - net.haesleinhuepf - clij-clearcl - 2.5.0.1 - - - net.haesleinhuepf - clij2_ - 2.5.3.1 - - - net.haesleinhuepf - clij2-assistant_ - 2.5.1.4 - - - net.haesleinhuepf - clijx_ - 0.32.2.0 - - - net.haesleinhuepf - clijx-weka_ - 0.32.1.1 - - - net.preibisch - BigStitcher - 1.2.10 - - - net.preibisch - multiview-reconstruction - 3.2.7 - - - net.preibisch - multiview-simulation - 0.2.0 - - - org.bonej - bonej-plugins - 7.0.18 - - - org.bonej - bonej-ops - 7.0.18 - - - org.bonej - bonej-legacy-plugins_ - 7.0.18 - - - org.bonej - bonej-legacy-util_ - 7.0.18 - - - org.bonej - bonej-utilities - 7.0.18 - - - org.morphonets - SNT - 4.2.1 - - - org.jzy3d - jzy3d-emul-gl - - - org.jzy3d - jGL - - - - - sc.fiji - MaMuT - 7.1.1 - - - sc.fiji - labkit-pixel-classification - 0.1.17 - - - sc.fiji - labkit-ui - 0.3.11 - - - com.zeroc - glacier2 - 3.6.5 - - - com.zeroc - ice - 3.6.5 - - - org.openmicroscopy - metakit - 5.3.6 - - - ch.qos.logback - logback-classic - - - - - org.openmicroscopy - ome-codecs - 1.0.1 - - - org.openmicroscopy - ome-common - 6.0.21 - - - ch.qos.logback - logback-classic - - - xalan - serializer - - - xalan - xalan - - - - - org.openmicroscopy - ome-poi - 5.3.8 - - - org.openmicroscopy - ome-xml - 6.3.4 - - - ome - jxrlib-all - 0.2.4 - - - ome - bio-formats-tools - 7.2.0 - - - xalan - serializer - - - xalan - xalan - - - - - ome - bio-formats_plugins - 7.2.0 - - - ch.qos.logback - logback-classic - - - - - ome - formats-api - 7.2.0 - - - xalan - serializer - - - xalan - xalan - - - - - ome - formats-bsd - 7.2.0 - - - xalan - serializer - - - xalan - xalan - - - - - ome - formats-gpl - 7.2.0 - - - org.openmicroscopy - omero-blitz - 5.7.2 - - - com.sun.activation - javax.activation - - - org.apache.xmlgraphics - batik-all - - - - - org.openmicroscopy - omero-common - 5.6.4 - - - ch.qos.logback - logback-classic - - - - - org.openmicroscopy - omero-dsl-plugin - 5.5.2 - - - org.openmicroscopy - omero-gateway - 5.9.0 - - - org.openmicroscopy - omero-model - 5.6.13 - - - javax.transaction - jta - - - org.apache.solr - solr-commons-csv - - - - - org.openmicroscopy - omero-renderer - 5.5.15 - - - c3p0 - c3p0 - - - - - org.openmicroscopy - omero-romio - 5.7.5 - - - org.openmicroscopy - omero-server - 5.6.10 - - - c3p0 - c3p0 - - - com.sun.mail - javax.mail - - - javax.activation - activation - - - org.apache.xmlgraphics - batik-all - - - - - net.clearcontrol - coremem - 0.4.8 - - - com.google.android.tools - dx - - - - - net.clearvolume - cleargl - 2.2.10 - - - org.jogamp.gluegen - gluegen-rt-main - - - org.jogamp.jogl - jogl-all-main - - - - - net.algart - algart-tiff - 1.2.7 - - - com.amazonaws - aws-java-sdk-core - 1.12.667 - - - com.amazonaws - aws-java-sdk-s3 - 1.12.667 - - - antlr - antlr - 2.7.7 - - - org.antlr - ST4 - 4.3.4 - - - org.antlr - antlr - 3.5.3 - - - org.antlr - antlr-runtime - 3.5.3 - - - org.apache.ant - ant - 1.10.14 - - - org.apache.ant - ant-launcher - 1.10.14 - - - org.apache.groovy - groovy - 4.0.18 - - - org.apache.groovy - groovy-ant - 4.0.18 - - - org.apache.groovy - groovy-astbuilder - 4.0.18 - - - org.apache.groovy - groovy-cli-commons - 4.0.18 - - - org.apache.groovy - groovy-cli-picocli - 4.0.18 - - - org.apache.groovy - groovy-console - 4.0.18 - - - org.apache.groovy - groovy-contracts - 4.0.18 - - - org.apache.groovy - groovy-datetime - 4.0.18 - - - org.apache.groovy - groovy-dateutil - 4.0.18 - - - org.apache.groovy - groovy-docgenerator - 4.0.18 - - - org.apache.groovy - groovy-ginq - 4.0.18 - - - org.apache.groovy - groovy-groovydoc - 4.0.18 - - - org.apache.groovy - groovy-groovysh - 4.0.18 - - - org.apache.groovy - groovy-jmx - 4.0.18 - - - org.apache.groovy - groovy-json - 4.0.18 - - - org.apache.groovy - groovy-jsr223 - 4.0.18 - - - org.apache.groovy - groovy-macro - 4.0.18 - - - org.apache.groovy - groovy-macro-library - 4.0.18 - - - org.apache.groovy - groovy-nio - 4.0.18 - - - org.apache.groovy - groovy-servlet - 4.0.18 - - - org.apache.groovy - groovy-sql - 4.0.18 - - - org.apache.groovy - groovy-swing - 4.0.18 - - - org.apache.groovy - groovy-templates - 4.0.18 - - - org.apache.groovy - groovy-test - 4.0.18 - - - org.apache.groovy - groovy-test-junit5 - 4.0.18 - - - org.apache.groovy - groovy-testng - 4.0.18 - - - org.apache.groovy - groovy-toml - 4.0.18 - - - org.apache.groovy - groovy-typecheckers - 4.0.18 - - - org.apache.groovy - groovy-xml - 4.0.18 - - - org.apache.groovy - groovy-yaml - 4.0.18 - - - org.apache.ivy - ivy - 2.5.2 - - - org.apache.logging.log4j - log4j-api - 2.20.0 - - - org.apache.logging.log4j - log4j-core - 2.20.0 - - - org.apache.maven.shared - maven-artifact-transfer - 0.13.1 - - - org.apache.maven.shared - maven-common-artifact-filters - 3.3.2 - - - org.apache.maven - maven-core - 3.9.6 - - - org.apache.maven.plugin-tools - maven-plugin-tools-api - 3.11.0 - - - org.codehaus.plexus - plexus-component-annotations - 2.2.0 - - - org.codehaus.plexus - plexus-utils - 4.0.0 - - - org.sonatype.sisu - sisu-inject-bean - 2.6.0 - - - org.sonatype.sisu - sisu-inject-plexus - 2.6.0 - - - org.apache.poi - poi - 5.2.5 - - - org.apache.poi - poi-examples - 5.2.5 - - - org.apache.poi - poi-excelant - 5.2.5 - - - org.apache.poi - poi-ooxml - 5.2.5 - - - org.apache.poi - poi-ooxml-lite - 5.2.5 - - - org.apache.poi - poi-scratchpad - 5.2.5 - - - org.apache.spark - spark-core_2.11 - 2.4.8 - - - com.sun.jersey - jersey-core - - - commons-beanutils - commons-beanutils-core - - - io.netty - netty-all - - - - - org.apache.httpcomponents - httpclient - 4.5.14 - - - org.apache.httpcomponents - httpcore - 4.4.16 - - - org.apache.httpcomponents - httpmime - 4.5.14 - - - args4j - args4j - 2.33 - - - org.ow2.asm - asm - 9.6 - - - org.ow2.asm - asm-analysis - 9.6 - - - org.ow2.asm - asm-commons - 9.6 - - - org.ow2.asm - asm-tree - 9.6 - - - org.ow2.asm - asm-util - 9.6 - - - org.apache.xmlgraphics - batik-anim - 1.17 - - - org.apache.xmlgraphics - batik-awt-util - 1.17 - - - org.apache.xmlgraphics - batik-bridge - 1.17 - - - xalan - xalan - - - - - org.apache.xmlgraphics - batik-codec - 1.17 - - - org.apache.xmlgraphics - batik-constants - 1.17 - - - org.apache.xmlgraphics - batik-css - 1.17 - - - org.apache.xmlgraphics - batik-dom - 1.17 - - - xalan - xalan - - - - - org.apache.xmlgraphics - batik-ext - 1.17 - - - org.apache.xmlgraphics - batik-extension - 1.17 - - - org.apache.xmlgraphics - batik-gui-util - 1.17 - - - org.apache.xmlgraphics - batik-gvt - 1.17 - - - org.apache.xmlgraphics - batik-i18n - 1.17 - - - org.apache.xmlgraphics - batik-parser - 1.17 - - - org.apache.xmlgraphics - batik-rasterizer - 1.17 - - - org.apache.xmlgraphics - batik-rasterizer-ext - 1.17 - - - org.apache.xmlgraphics - batik-extensions - - - - - org.apache.xmlgraphics - batik-script - 1.17 - - - org.apache.xmlgraphics - batik-slideshow - 1.17 - - - org.apache.xmlgraphics - batik-squiggle - 1.17 - - - org.apache.xmlgraphics - batik-squiggle-ext - 1.17 - - - org.apache.xmlgraphics - batik-extensions - - - - - org.apache.xmlgraphics - batik-svg-dom - 1.17 - - - org.apache.xmlgraphics - batik-svggen - 1.17 - - - org.apache.xmlgraphics - batik-svgpp - 1.17 - - - org.apache.xmlgraphics - batik-swing - 1.17 - - - org.apache.xmlgraphics - batik-transcoder - 1.17 - - - org.apache.xmlgraphics - batik-ttf2svg - 1.17 - - - org.apache.xmlgraphics - batik-util - 1.17 - - - org.apache.xmlgraphics - batik-xml - 1.17 - - - org.apache.xmlgraphics - xmlgraphics-commons - 2.9 - - - org.lasersonlab - jblosc - 1.0.1 - - - com.nativelibs4java - bridj - 0.7.0 - - - com.google.android.tools - dx - - - - - javax.enterprise - cdi-api - 2.0.SP1 - - - org.checkerframework - checker-qual - 3.42.0 - - - commons-beanutils - commons-beanutils - 1.9.4 - - - commons-cli - commons-cli - 1.6.0 - - - commons-codec - commons-codec - 1.16.1 - - - commons-collections - commons-collections - 3.2.2 - - - org.apache.commons - commons-collections4 - 4.4 - - - org.apache.commons - commons-compress - 1.26.0 - - - org.apache.commons - commons-csv - 1.10.0 - - - commons-io - commons-io - 2.15.1 - - - commons-lang - commons-lang - 2.6 - - - org.apache.commons - commons-lang3 - 3.14.0 - - - commons-logging - commons-logging - 1.3.0 - - - org.apache.commons - commons-math3 - 3.6.1 - - - org.apache.commons - commons-pool2 - 2.12.0 - - - org.apache.commons - commons-text - 1.11.0 - - - cglib - cglib - 3.3.0 - - - dev.dirs - directories - 26 - - - org.eclipse.collections - eclipse-collections - 11.1.0 - - - org.eclipse.collections - eclipse-collections-api - 11.1.0 - - - org.eclipse.collections - eclipse-collections-forkjoin - 11.1.0 - - - org.eclipse.collections - eclipse-collections-testutils - 11.1.0 - - - org.eclipse.swt - org.eclipse.swt.cocoa.macosx - 4.3 - - - org.eclipse.swt - org.eclipse.swt.cocoa.macosx.x86_64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.aix.ppc - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.aix.ppc64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.hpux.ia64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.ppc - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.ppc64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.s390 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.s390x - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.x86 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.linux.x86_64 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.solaris.sparc - 4.3 - - - org.eclipse.swt - org.eclipse.swt.gtk.solaris.x86 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.win32.win32.x86 - 4.3 - - - org.eclipse.swt - org.eclipse.swt.win32.win32.x86_64 - 4.3 - - - org.ejml - ejml-all - 0.41 - - - com.google.errorprone - error_prone_annotations - 2.25.0 - - - com.formdev - flatlaf - 3.4 - - - com.formdev - flatlaf-fonts-jetbrains-mono - 2.304 - - - com.google.api-client - google-api-client - 2.3.0 - - - com.google.api-client - google-api-client-android - 2.3.0 - - - com.google.api-client - google-api-client-appengine - 2.3.0 - - - com.google.api-client - google-api-client-gson - 2.3.0 - - - com.google.api-client - google-api-client-jackson2 - 2.3.0 - - - com.google.api-client - google-api-client-protobuf - 2.3.0 - - - com.google.api-client - google-api-client-servlet - 2.3.0 - - - javax.servlet - servlet-api - - - - - com.google.api-client - google-api-client-xml - 2.3.0 - - - com.google.api - api-common - 2.26.0 - - - com.google.api - gax - 2.43.0 - - - com.google.api - gax-grpc - 2.43.0 - - - com.google.api - gax-httpjson - 2.43.0 - - - com.google.api.grpc - proto-google-common-protos - 2.34.0 - - - com.google.api.grpc - proto-google-iam-v1 - 1.29.0 - - - com.google.auth - google-auth-library-appengine - 1.23.0 - - - com.google.auth - google-auth-library-credentials - 1.23.0 - - - com.google.auth - google-auth-library-oauth2-http - 1.23.0 - - - com.google.auto.value - auto-value - 1.10.4 - - - com.google.auto.value - auto-value-annotations - 1.10.4 - - - com.google.cloud - google-cloud-core - 2.33.0 - - - com.google.cloud - google-cloud-core-http - 2.33.0 - - - com.google.cloud - google-cloud-nio - 0.127.13 - - - com.google.cloud - google-cloud-resourcemanager - 1.38.0 - - - com.google.cloud - google-cloud-storage - 2.34.0 - - - com.google.http-client - google-http-client - 1.44.1 - - - com.google.http-client - google-http-client-apache-v2 - 1.44.1 - - - com.google.http-client - google-http-client-appengine - 1.44.1 - - - com.google.http-client - google-http-client-gson - 1.44.1 - - - com.google.http-client - google-http-client-jackson2 - 1.44.1 - - - com.google.http-client - google-http-client-xml - 1.44.1 - - - io.grpc - grpc-context - 1.62.2 - - - com.google.code.gson - gson - 2.10.1 - - - com.google.guava - guava - 33.0.0-jre - - - io.humble - humble-video-all - 0.3.0 - - - hsqldb - hsqldb - 1.8.0.10 - - - com.itextpdf - itextpdf - 5.5.13.3 - - - com.google.j2objc - j2objc-annotations - 2.8 - - - org.apache.jackrabbit - jackrabbit-webdav - 2.21.22 - - - org.slf4j - jcl-over-slf4j - - - - - com.fasterxml.jackson.core - jackson-annotations - 2.16.1 - - - com.fasterxml.jackson.core - jackson-core - 2.16.1 - - - com.fasterxml.jackson.core - jackson-databind - 2.16.1 - - - com.fasterxml.jackson.dataformat - jackson-dataformat-cbor - 2.16.1 - - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.16.1 - - - com.sun.media - jai-codec - 1.1.3 - - - javax.media - jai-core - 1.1.3 - - - gov.nist.math - jama - 1.0.3 - - - org.scijava - j3dcore - 1.6.0-scijava-2 - - - org.scijava - j3dutils - 1.6.0-scijava-2 - - - org.scijava - vecmath - 1.6.0-scijava-2 - - - org.bytedeco - javacpp - 1.5.10 - - - org.bytedeco - javacv - 1.5.10 - - - org.bytedeco - ffmpeg - 6.1.1-1.5.10 - - - org.bytedeco - hdf5 - 1.14.3-1.5.10 - - - org.bytedeco - leptonica - 1.84.1-1.5.10 - - - org.bytedeco - openblas - 0.3.26-1.5.10 - - - org.bytedeco - opencv - 4.9.0-1.5.10 - - - org.bytedeco - tesseract - 5.3.4-1.5.10 - - - org.bytedeco - ffmpeg - 6.1.1-1.5.10 - linux-x86_64 - - - org.bytedeco - hdf5 - 1.14.3-1.5.10 - linux-x86_64 - - - org.bytedeco - leptonica - 1.84.1-1.5.10 - linux-x86_64 - - - org.bytedeco - openblas - 0.3.26-1.5.10 - linux-x86_64 - - - org.bytedeco - opencv - 4.9.0-1.5.10 - linux-x86_64 - - - org.bytedeco - tesseract - 5.3.4-1.5.10 - linux-x86_64 - - - org.javassist - javassist - 3.30.2-GA - - - org.jruby.jcodings - jcodings - 1.0.58 - - - org.jdom - jdom2 - 2.0.6.1 - - - org.scijava - jep - 2.4.2 - - - org.eclipse.jetty - jetty-annotations - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-client - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-continuation - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-deploy - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-http - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-http-spi - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-io - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-jaspi - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-jmx - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-jndi - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-nosql - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-plus - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-proxy - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-rewrite - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-security - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-server - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-servlet - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-servlets - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-spring - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-start - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-util - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-util-ajax - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-webapp - 9.4.54.v20240208 - - - org.eclipse.jetty - jetty-xml - 9.4.54.v20240208 - - - org.jfree - jfreechart - 1.5.4 - - - org.jfree - jfreesvg - 3.4.3 - - - org.jgrapht - jgrapht-core - 1.4.0 - - - org.jgrapht - jgrapht-demo - 1.4.0 - - - org.jgrapht - jgrapht-ext - 1.4.0 - - - org.jgrapht - jgrapht-guava - 1.4.0 - - - org.jgrapht - jgrapht-io - 1.4.0 - - - org.jgrapht - jgrapht-opt - 1.4.0 - - - it.unimi.dsi - fastutil - - - - - com.github.vlsi.mxgraph - jgraphx - 4.2.2 - - - cisd - jhdf5 - 19.04.1 - - - org.jheaps - jheaps - 0.14 - - - jline - jline - 2.14.6 - - - org.jline - jline-builtins - 3.25.1 - - - org.jline - jline-console - 3.25.1 - - - org.jline - jline-reader - 3.25.1 - - - org.jline - jline-remote-ssh - 3.25.1 - - - org.jline - jline-remote-telnet - 3.25.1 - - - org.jline - jline-style - 3.25.1 - - - org.jline - jline-terminal - 3.25.1 - - - org.jline - jline-terminal-jna - 3.25.1 - - - net.java.dev.jna - jna - 5.14.0 - - - net.java.dev.jna - jna-platform - 5.14.0 - - - com.github.jnr - jffi - 1.3.13 - - - com.github.jnr - jffi - 1.3.13 - native - - - com.github.jnr - jnr-constants - 0.10.4 - - - com.github.jnr - jnr-ffi - 2.2.16 - - - com.github.jnr - jnr-posix - 3.1.19 - - - joda-time - joda-time - 2.12.7 - - - org.jocl - jocl - 2.0.5 - - - org.jogamp.gluegen - gluegen - 2.5.0 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - - - org.jogamp.joal - joal - 2.5.0 - - - org.jogamp.jocl - jocl - 2.5.0 - - - org.jogamp.jogl - jogl-all - 2.5.0 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-android-aarch64 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt - 2.5.0 - natives-windows-amd64 - - - org.jogamp.joal - joal - 2.5.0 - natives-android-aarch64 - - - org.jogamp.joal - joal - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.joal - joal - 2.5.0 - natives-linux-amd64 - - - org.jogamp.joal - joal - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.joal - joal - 2.5.0 - natives-macosx-universal - - - org.jogamp.joal - joal - 2.5.0 - natives-windows-amd64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-android-aarch64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-linux-amd64 - - - org.jogamp.jocl - jocl - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.jocl - jocl - 2.5.0 - natives-macosx-universal - - - org.jogamp.jocl - jocl - 2.5.0 - natives-windows-amd64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-android-aarch64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-linux-amd64 - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-macosx-universal - - - org.jogamp.jogl - jogl-all - 2.5.0 - natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-android-aarch64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-macosx-universal - - - org.jogamp.jogl - jogl-all-noawt - 2.5.0 - natives-windows-amd64 - - - org.jogamp.java3d - java3d-core - 1.7.2 - - - org.jogamp.java3d - java3d-utils - 1.7.2 - - - org.jogamp.java3d - vecmath - 1.7.2 - - - org.joml - joml - 1.10.5 - - - org.jruby.joni - joni - 2.2.1 - - - org.jpedal - jpedalSTD - 2.80b11 - - - org.smurn - jply - 0.2.1 - - - com.jcraft - jsch - 0.1.55 - - - org.json - json - 20240205 - - - org.python - jython-slim - 2.7.3 - - - com.jcraft - jzlib - 1.1.3 - - - org.jzy3d - jzy3d-core - 2.2.1 - - - org.jzy3d - jzy3d-core-awt - 2.2.1 - - - org.jzy3d - jzy3d-emul-gl-awt - 2.2.1 - - - org.jzy3d - jzy3d-jGL-awt - 2.2.1 - - - org.jzy3d - jzy3d-jdt-core - 2.2.1 - - - org.jzy3d - jzy3d-native-jogl-awt - 2.2.1 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt-natives-linux-i586 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-windows-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-windows-i586 - - - org.jogamp.jogl - jogl-all-natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-natives-linux-i586 - - - org.jogamp.jogl - jogl-all-natives-macosx-universal - - - org.jogamp.jogl - jogl-all-natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-natives-windows-i586 - - - - - org.jzy3d - jzy3d-native-jogl-core - 2.2.1 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-linux-aarch64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-linux-armv6hf - - - org.jogamp.gluegen - gluegen-rt-natives-linux-i586 - - - org.jogamp.gluegen - gluegen-rt-natives-macosx-universal - - - org.jogamp.gluegen - gluegen-rt-natives-windows-amd64 - - - org.jogamp.gluegen - gluegen-rt-natives-windows-i586 - - - org.jogamp.jogl - jogl-all-natives-linux-aarch64 - - - org.jogamp.jogl - jogl-all-natives-linux-amd64 - - - org.jogamp.jogl - jogl-all-natives-linux-armv6hf - - - org.jogamp.jogl - jogl-all-natives-linux-i586 - - - org.jogamp.jogl - jogl-all-natives-macosx-universal - - - org.jogamp.jogl - jogl-all-natives-windows-amd64 - - - org.jogamp.jogl - jogl-all-natives-windows-i586 - - - - - org.jzy3d - jzy3d-native-jogl-swing - 2.2.1 - - - com.miglayout - miglayout - - - - - org.jzy3d - jzy3d-tester - 2.2.1 - - - org.jetbrains.kotlin - kotlin-compiler-embeddable - 1.9.22 - - - org.jetbrains.kotlin - kotlin-daemon-embeddable - 1.9.22 - - - org.jetbrains.kotlin - kotlin-reflect - 1.9.22 - - - org.jetbrains.kotlin - kotlin-script-runtime - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-common - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-compiler-embeddable - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-jsr223 - 1.9.22 - - - org.jetbrains.kotlin - kotlin-scripting-jvm - 1.9.22 - - - org.jetbrains.kotlin - kotlin-stdlib - 1.9.22 - - - org.jetbrains.kotlin - kotlin-stdlib-common - 1.9.22 - - - org.jetbrains.kotlin - kotlin-stdlib-jdk8 - 1.9.22 - - - org.jetbrains.kotlinx - kotlinx-coroutines-core - 1.8.0 - - - org.jetbrains.kotlinx - kotlinx-coroutines-core-jvm - 1.8.0 - - - com.esotericsoftware - kryo - 5.6.0 - - - com.esotericsoftware - minlog - 1.3.1 - - - com.esotericsoftware - reflectasm - 1.11.9 - - - ch.qos.logback - logback-classic - 1.2.12 - - - javax.activation - activation - - - - - ch.qos.logback - logback-core - 1.2.12 - - - org.lz4 - lz4-java - 1.8.0 - - - org.mapdb - mapdb - 3.1.0 - - - net.jpountz.lz4 - lz4 - - - - - com.miglayout - miglayout-core - 5.3 - - - com.miglayout - miglayout-swing - 5.3 - - - com.miglayout - miglayout-swt - 5.3 - - - edu.mines - mines-jtk - 20151125 - - - org.objenesis - objenesis - 3.3 - - - com.squareup.okhttp3 - okhttp - 4.12.0 - - - com.squareup.okio - okio - 3.8.0 - - - org.ojalgo - ojalgo - 45.1.1 - - - com.opencsv - opencsv - 5.9 - - - info.picocli - picocli - 4.7.5 - - - org.postgresql - postgresql - 42.7.2 - - - com.google.protobuf - protobuf-java - 3.23.0 - - - com.google.protobuf - protobuf-java-util - 3.23.0 - - - com.google.protobuf - protobuf-kotlin - 3.23.0 - - - com.google.re2j - re2j - 1.7 - - - ch.qos.reload4j - reload4j - 1.2.25 - - - com.fifesoft - rsyntaxtextarea - 3.4.0 - - - com.fifesoft - autocomplete - 3.3.1 - - - com.fifesoft - languagesupport - 3.3.0 - - - org.slf4j - slf4j-api - 1.7.36 - - - org.slf4j - slf4j-ext - 1.7.36 - - - org.slf4j - slf4j-jcl - 1.7.36 - - - org.slf4j - slf4j-jdk14 - 1.7.36 - - - org.slf4j - slf4j-nop - 1.7.36 - - - org.slf4j - slf4j-simple - 1.7.36 - - - org.slf4j - jcl-over-slf4j - 1.7.36 - - - org.yaml - snakeyaml - 2.2 - - - org.snakeyaml - snakeyaml-engine - 2.7 - - - org.springframework - spring-aop - 3.2.9.RELEASE - - - org.springframework - spring-beans - 3.2.9.RELEASE - - - org.springframework - spring-core - 3.2.9.RELEASE - - - org.tensorflow - tensorflow - 1.12.0 - - - org.tensorflow - libtensorflow - 1.12.0 - - - org.tensorflow - libtensorflow_jni - 1.12.0 - - - org.tensorflow - libtensorflow_jni_gpu - 1.12.0 - - - org.tensorflow - proto - 1.12.0 - - - org.threeten - threetenbp - 1.6.8 - - - net.sf.trove4j - trove4j - 3.0.3 - - - nz.ac.waikato.cms.weka - weka-dev - 3.9.6 - - - com.github.fommil.netlib - all - - - com.github.vbmacher - java-cup-runtime - - - com.googlecode.netlib-java - netlib-java - - - com.sun.activation - jakarta.activation - - - nz.ac.waikato.cms.weka.thirdparty - java-cup-11b - - - nz.ac.waikato.cms.weka.thirdparty - java-cup-11b-runtime - - - net.sourceforge.f2j - arpack_combined_all - - - - - org.tukaani - xz - 1.9 - - - com.github.luben - zstd-jni - 1.5.5-11 - - - org.scijava - scijava-common - 2.98.0 - tests - test - - - net.imagej - imagej-legacy - 1.2.1 - tests - test - - - net.imagej - imagej-ops - 2.0.0 - tests - test - - - net.imagej - imagej-updater - 1.0.1 - tests - test - - - net.imglib2 - imglib2 - 6.3.0 - tests - test - - - org.janelia.saalfeldlab - n5 - 3.1.3 - tests - test - - - junit - junit - 4.13.2 - test - - - org.junit.jupiter - junit-jupiter-api - 5.10.2 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.10.2 - test - - - org.junit.jupiter - junit-jupiter-migrationsupport - 5.10.2 - test - - - org.junit.jupiter - junit-jupiter-params - 5.10.2 - test - - - org.junit.vintage - junit-vintage-engine - 5.10.2 - test - - - org.scijava - junit-benchmarks - 0.7.4-scijava - test - - - org.jmockit - jmockit - 1.49 - test - - - org.mockito - mockito-core - 2.19.0 - test - - - org.openjdk.jmh - jmh-core - 1.37 - test - - - org.openjdk.jmh - jmh-generator-annprocess - 1.37 - test - - - - - - - false - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - - - - never - - - false - - central - Central Repository - https://repo.maven.apache.org/maven2 - - - - /home/elect/IdeaProjects/pom-scijava/src/main/java - /home/elect/IdeaProjects/pom-scijava/src/main/scripts - /home/elect/IdeaProjects/pom-scijava/src/test/java - /home/elect/IdeaProjects/pom-scijava/target/classes - /home/elect/IdeaProjects/pom-scijava/target/test-classes - - - org.apache.maven.wagon - wagon-webdav-jackrabbit - 1.0 - - - install - - - /home/elect/IdeaProjects/pom-scijava/src/main/resources - - - - - /home/elect/IdeaProjects/pom-scijava/src/test/resources - - - /home/elect/IdeaProjects/pom-scijava/target - pom-scijava-38.0.0-SNAPSHOT - - - - maven-antrun-plugin - 3.1.0 - - - maven-assembly-plugin - 3.6.0 - - - maven-clean-plugin - 3.3.2 - - - maven-compiler-plugin - 3.8.1 - - - maven-dependency-plugin - 3.6.1 - - - maven-deploy-plugin - 3.1.1 - - - maven-enforcer-plugin - 3.4.1 - - - org.codehaus.mojo - extra-enforcer-rules - 1.7.0 - compile - - - org.scijava - scijava-maven-plugin - 3.0.0 - compile - - - - - maven-failsafe-plugin - 3.2.5 - - - - integration-test - verify - - - - - - maven-gpg-plugin - 3.1.0 - - - sign-artifacts - verify - - sign - - - true - - - - - true - - - - maven-help-plugin - 3.4.0 - - - maven-install-plugin - 3.1.1 - - - maven-jar-plugin - 3.3.0 - - - - test-jar - - - - - true - true - true - - ${package-guess} - - - - ${buildNumber} - 2024-03-03T16:51:20+0000 - ${package-guess} - - - true - - - - - - - true - true - true - - ${package-guess} - - - - ${buildNumber} - 2024-03-03T16:51:20+0000 - ${package-guess} - - - true - - - - maven-javadoc-plugin - 3.6.3 - - 1024m - - https://javadoc.scijava.org/Java8/ - https://javadoc.scijava.org/JavaFX8/ - https://javadoc.scijava.org/SciJava/ - https://javadoc.scijava.org/Alida/ - https://javadoc.scijava.org/Bio-Formats/ - https://javadoc.scijava.org/FLIMLib/ - https://javadoc.scijava.org/Fiji/ - https://javadoc.scijava.org/Icy/ - https://javadoc.scijava.org/ImageJ/ - https://javadoc.scijava.org/ImageJ1/ - https://javadoc.scijava.org/ImgLib2/ - https://javadoc.scijava.org/Java3D/ - https://javadoc.scijava.org/KNIME/ - https://javadoc.scijava.org/LOCI/ - https://javadoc.scijava.org/MiToBo/ - https://javadoc.scijava.org/Micro-Manager-Core/ - https://javadoc.scijava.org/Micro-Manager-Studio/ - https://javadoc.scijava.org/MorphoLibJ/ - https://javadoc.scijava.org/OMERO/ - https://javadoc.scijava.org/SCIFIO/ - https://javadoc.scijava.org/Apache-Commons-IO/ - https://javadoc.scijava.org/Apache-Commons-Lang/ - https://javadoc.scijava.org/Apache-Commons-Math/ - https://javadoc.scijava.org/Apache-Commons-Text/ - https://javadoc.scijava.org/BoneJ/ - https://javadoc.scijava.org/Eclipse/ - https://javadoc.scijava.org/Guava/ - https://javadoc.scijava.org/JAMA/ - https://javadoc.scijava.org/JFreeChart/ - https://javadoc.scijava.org/JGraphT/ - https://javadoc.scijava.org/JHotDraw/ - https://javadoc.scijava.org/JOML/ - https://javadoc.scijava.org/Javassist/ - https://javadoc.scijava.org/MigLayout/ - https://javadoc.scijava.org/NetBeans/ - https://javadoc.scijava.org/Pivot/ - https://javadoc.scijava.org/VisAD/ - https://javadoc.scijava.org/Weka/ - https://javadoc.scijava.org/ojAlgo/ - - - - - maven-plugin-plugin - 3.11.0 - - - maven-project-info-reports-plugin - 3.5.0 - - - maven-release-plugin - 3.0.1 - - - maven-resources-plugin - 3.3.1 - - - maven-shade-plugin - 3.5.2 - - - maven-site-plugin - 3.12.1 - - - maven-source-plugin - 3.3.0 - - - attach-sources - none - - - attach-sources-jar - - jar - - - - - - maven-surefire-plugin - 3.2.5 - - @{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement=true - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.5.0 - - - sanitize-version - - regex-property - - - sanitizedVersion - 38.0.0-SNAPSHOT - ^([0-9]+)\.([0-9]+)\.([0-9]+).*$ - $1.$2.$3 - false - - - - guess-package - - regex-property - - - package-guess - org.scijava.pom-scijava - [^a-z0-9_.]+ - _ - false - - - - - - org.codehaus.mojo - buildnumber-maven-plugin - 3.2.0 - - - validate - - create - - - true - UNKNOWN - - - - - - net.java.dev.jna - platform - 3.5.2 - compile - - - - true - UNKNOWN - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.7 - - - html - xml - - - - - org.codehaus.mojo - exec-maven-plugin - 3.2.0 - - - org.codehaus.mojo - license-maven-plugin - 2.4.0 - - false - true - true - - java - properties - java - - - - - org.codehaus.mojo - tidy-maven-plugin - 1.2.0 - - - org.codehaus.mojo - versions-maven-plugin - 2.16.2 - - - org.scijava - scijava-maven-plugin - 3.0.0 - - - set-rootdir - validate - - set-rootdir - - - - - - com.zenjava - javafx-maven-plugin - 8.8.3 - - SciJava Parent POM - SciJava Parent POM - SciJava Parent POM.jar - - ${sanitizedVersion} - true - - - - net.revelc.code - impsort-maven-plugin - 1.9.0 - - - none - - java.,javax.,com.,net.,org. - java,* - true - - - - - java.,javax.,com.,net.,org. - java,* - true - - - - net.revelc.code.formatter - formatter-maven-plugin - 2.23.0 - - - org.scijava - scijava-coding-style - 2.1.1 - compile - - - - eclipse-formatter-settings/scijava-coding-style.xml - - - - org.fusesource.mvnplugins - maven-graph-plugin - 1.45 - - provided,runtime,system,test - true - - /home/elect/IdeaProjects/pom-scijava/target/dependency-graph.dot - - - - org.honton.chas - exists-maven-plugin - 0.12.0 - - - - remote - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.11 - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - package - - report - - - - - - org.revapi - revapi-maven-plugin - 0.15.0 - - - org.revapi - revapi-java - 0.28.1 - - - - - org.sonarsource.scanner.maven - sonar-maven-plugin - 3.10.0.2594 - - - - - - maven-enforcer-plugin - 3.4.1 - - - enforce-rules - - enforce - - - - - 3.6.3 - - - Plugins need to be versioned! - - - [1.8.0-101,) - - - No Duplicate Classes Allowed! -- For duplicate transitive dependencies, add dependency exclusions. -- For duplications between direct dependencies, resolve or add - ignored classes to this rule's configuration. - true - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - 8 - - com.headius:invokebinder - com.sun:tools - - - module-info - - - test - - - - - name - description - url - inceptionYear - organization - licenses - developers - contributors - mailingLists - scm - issueManagement - ciManagement - properties//license.licenseName - properties//license.copyrightOwners - - - - org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji - - - - - - - - org.codehaus.mojo - extra-enforcer-rules - 1.7.0 - compile - - - org.scijava - scijava-maven-plugin - 3.0.0 - compile - - - - - - 3.6.3 - - - Plugins need to be versioned! - - - [1.8.0-101,) - - - No Duplicate Classes Allowed! -- For duplicate transitive dependencies, add dependency exclusions. -- For duplications between direct dependencies, resolve or add - ignored classes to this rule's configuration. - true - com.google.inject.*,javax.xml.namespace.QName,jnr.ffi.*,org.apache.hadoop.yarn.*.package-info,org.apache.spark.unused.UnusedStubClass,org.eclipse.aether.*,org.hibernate.stat.ConcurrentStatisticsImpl,org.junit.runner.Runner,org.jzy3d.plot3d.pipelines.* - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - founder,lead,developer,debugger,reviewer,support,maintainer - - - 8 - - com.headius:invokebinder - com.sun:tools - - - module-info - - - test - - - - - name - description - url - inceptionYear - organization - licenses - developers - contributors - mailingLists - scm - issueManagement - ciManagement - properties//license.licenseName - properties//license.copyrightOwners - - - - org.scijava,net.imagej,net.imglib2,io.scif,sc.fiji - - - - - - maven-failsafe-plugin - 3.2.5 - - - - integration-test - verify - - - - - - maven-source-plugin - 3.3.0 - - - attach-sources - none - - - attach-sources-jar - - jar - - - - - - maven-surefire-plugin - 3.2.5 - - @{argLine} -Xms512m -Xmx512m -Dapple.awt.UIElement=true - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.5.0 - - - sanitize-version - - regex-property - - - sanitizedVersion - 38.0.0-SNAPSHOT - ^([0-9]+)\.([0-9]+)\.([0-9]+).*$ - $1.$2.$3 - false - - - - guess-package - - regex-property - - - package-guess - org.scijava.pom-scijava - [^a-z0-9_.]+ - _ - false - - - - - - org.codehaus.mojo - buildnumber-maven-plugin - 3.2.0 - - - validate - - create - - - true - UNKNOWN - - - - - - net.java.dev.jna - platform - 3.5.2 - compile - - - - true - UNKNOWN - - - - org.scijava - scijava-maven-plugin - 3.0.0 - - - set-rootdir - validate - - set-rootdir - - - older - - - - populate-app - install - - populate-app - - - older - - - - - older - - - - com.zenjava - javafx-maven-plugin - 8.8.3 - - SciJava Parent POM - SciJava Parent POM - SciJava Parent POM.jar - - ${sanitizedVersion} - true - - - - net.revelc.code - impsort-maven-plugin - 1.9.0 - - - none - - java.,javax.,com.,net.,org. - java,* - true - - - - - java.,javax.,com.,net.,org. - java,* - true - - - - net.revelc.code.formatter - formatter-maven-plugin - 2.23.0 - - - org.scijava - scijava-coding-style - 2.1.1 - compile - - - - eclipse-formatter-settings/scijava-coding-style.xml - - - - org.fusesource.mvnplugins - maven-graph-plugin - 1.45 - - provided,runtime,system,test - true - - /home/elect/IdeaProjects/pom-scijava/target/dependency-graph.dot - - - - org.jacoco - jacoco-maven-plugin - 0.8.11 - - - jacoco-initialize - - prepare-agent - - - - jacoco-site - package - - report - - - - - - maven-javadoc-plugin - 3.6.3 - - /usr/lib/jvm/jdk-19/bin/javadoc - 1024m - - https://javadoc.scijava.org/Java8/ - https://javadoc.scijava.org/JavaFX8/ - https://javadoc.scijava.org/SciJava/ - https://javadoc.scijava.org/Alida/ - https://javadoc.scijava.org/Bio-Formats/ - https://javadoc.scijava.org/FLIMLib/ - https://javadoc.scijava.org/Fiji/ - https://javadoc.scijava.org/Icy/ - https://javadoc.scijava.org/ImageJ/ - https://javadoc.scijava.org/ImageJ1/ - https://javadoc.scijava.org/ImgLib2/ - https://javadoc.scijava.org/Java3D/ - https://javadoc.scijava.org/KNIME/ - https://javadoc.scijava.org/LOCI/ - https://javadoc.scijava.org/MiToBo/ - https://javadoc.scijava.org/Micro-Manager-Core/ - https://javadoc.scijava.org/Micro-Manager-Studio/ - https://javadoc.scijava.org/MorphoLibJ/ - https://javadoc.scijava.org/OMERO/ - https://javadoc.scijava.org/SCIFIO/ - https://javadoc.scijava.org/Apache-Commons-IO/ - https://javadoc.scijava.org/Apache-Commons-Lang/ - https://javadoc.scijava.org/Apache-Commons-Math/ - https://javadoc.scijava.org/Apache-Commons-Text/ - https://javadoc.scijava.org/BoneJ/ - https://javadoc.scijava.org/Eclipse/ - https://javadoc.scijava.org/Guava/ - https://javadoc.scijava.org/JAMA/ - https://javadoc.scijava.org/JFreeChart/ - https://javadoc.scijava.org/JGraphT/ - https://javadoc.scijava.org/JHotDraw/ - https://javadoc.scijava.org/JOML/ - https://javadoc.scijava.org/Javassist/ - https://javadoc.scijava.org/MigLayout/ - https://javadoc.scijava.org/NetBeans/ - https://javadoc.scijava.org/Pivot/ - https://javadoc.scijava.org/VisAD/ - https://javadoc.scijava.org/Weka/ - https://javadoc.scijava.org/ojAlgo/ - - - - - maven-clean-plugin - 3.3.2 - - - default-clean - clean - - clean - - - - - - maven-install-plugin - 3.1.1 - - - default-install - install - - install - - - - - - maven-deploy-plugin - 3.1.1 - - - default-deploy - deploy - - deploy - - - - - - maven-site-plugin - 3.12.1 - - - default-site - site - - site - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-project-info-reports-plugin - - - - - - default-deploy - site-deploy - - deploy - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-project-info-reports-plugin - - - - - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-project-info-reports-plugin - - - - - - - - /home/elect/IdeaProjects/pom-scijava/target/site - - - maven-javadoc-plugin - - - - diff --git a/gradle/platform/gradle/wrapper/gradle-wrapper.jar b/gradle/platform/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index d64cd4917707c1f8861d8cb53dd15194d4248596..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43462 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 diff --git a/gradle/platform/gradle/wrapper/gradle-wrapper.properties b/gradle/platform/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index b82aa23..0000000 --- a/gradle/platform/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,7 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip -networkTimeout=10000 -validateDistributionUrl=true -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradle/platform/gradlew b/gradle/platform/gradlew deleted file mode 100755 index 1aa94a4..0000000 --- a/gradle/platform/gradlew +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - if ! command -v java >/dev/null 2>&1 - then - die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC2039,SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gradle/platform/gradlew.bat b/gradle/platform/gradlew.bat deleted file mode 100644 index 93e3f59..0000000 --- a/gradle/platform/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gradle/platform/settings.gradle.kts b/gradle/platform/settings.gradle.kts deleted file mode 100644 index dd1d779..0000000 --- a/gradle/platform/settings.gradle.kts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html - */ - -rootProject.name = "gradle-platform" - -dependencyResolutionManagement { - - // repositories { .. } - versionCatalogs { - // create("libs") { - // from("org.scijava:gradle-catalog:0.11") - // library("my-lib", "com.mycompany:mylib:1.2") - // } - // maybeCreate("libs").version("groovy", "3.0.9") - // maybeCreate("libs").library("groovy-core", "org.codehaus.groovy:groovy:2.4.15") - - // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." - if (file("../catalog/build/version-catalog/libs.versions.toml").exists()) - create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) - } - - includeBuild("../catalog") -} - -enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/playground/build.gradle.kts b/gradle/playground/build.gradle.kts deleted file mode 100644 index b40c122..0000000 --- a/gradle/playground/build.gradle.kts +++ /dev/null @@ -1,119 +0,0 @@ -import org.gradle.api.publish.maven.internal.publication.DefaultMavenPom - -plugins { - embeddedKotlin("jvm") - id("org.gradlex.java-ecosystem-capabilities") version "1.5.2.00" - id("dev.jacomet.logging-capabilities") version "0.11.1" - id("io.fuchs.gradle.classpath-collision-detector") version "0.3" - `maven-publish` -} - -repositories { - mavenCentral() - maven("https://maven.scijava.org/content/repositories/releases") - maven("https://maven.scijava.org/content/groups/public") -} - -// @CacheableRule is more verbose but more efficient, because the rule will be applied before the dependency get cached -// in Gradle, it will appear as this was the original downloaded metadata of the given dependency - -inline fun ComponentMetadataHandler.withModules(vararg modules: String) { - for (module in modules) withModule(module) -} - -abstract class Rule : ComponentMetadataRule { - fun ComponentMetadataContext.remove(vararg modules: String) = details.allVariants { withDependencies { removeIf { it.module.toString() in modules } } } -} -dependencies { - components { - @CacheableRule open class NoXalan : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove("xalan:serializer", "xalan:xalan") - } - withModules("org.openmicroscopy:ome-common", "ome:bio-formats-tools", "ome:formats-api", "ome:formats-bsd", - "org.apache.xmlgraphics:batik-bridge", "org.apache.xmlgraphics:batik-dom") - - @CacheableRule open class NoUeberJars : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove("org.apache.xmlgraphics:batik-all", "it.unimi.dsi:fastutil") - } - withModules("org.openmicroscopy:omero-blitz", "org.openmicroscopy:omero-server") - - @CacheableRule open class NoAndroid : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove("com.google.android.tools:dx") - } - withModules("net.clearcontrol:coremem", "com.nativelibs4java:bridj") - - @CacheableRule open class ClearGl : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove("org.jogamp.gluegen:gluegen-rt-main", "org.jogamp.jogl:jogl-all-main") - } - withModule("net.clearvolume:cleargl") - - @CacheableRule open class SparkCore211 : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove("io.netty:netty-all") - } - withModule("org.apache.spark:spark-core_2.11") - - @CacheableRule open class NoBatikExtensions : Rule() { - override fun execute(context: ComponentMetadataContext) = context.remove("org.apache.xmlgraphics:batik-extensions") - } - withModules("org.apache.xmlgraphics:batik-rasterizer-ext", "org.apache.xmlgraphics:batik-squiggle-ext") - - @CacheableRule open class NoJogampNatives : Rule() { - override fun execute(context: ComponentMetadataContext) { - // Conflicts with properly packaged jogamp native classifiers. - val libs = listOf("gluegen:gluegen-rt", "jogl:jogl-all") - val modules = listOf("linux-aarch64", "linux-amd64", "linux-armv6hf", "linux-i586", "macosx-universal", "windows-amd64", "windows-i586") - .flatMap { p -> libs.map { "org.jogamp.$it-natives-$p" } }.toTypedArray() - context.remove(*modules) - } - } - withModules("org.jzy3d:jzy3d-native-jogl-awt", "org.jzy3d:jzy3d-native-jogl-core") - - @CacheableRule open class Weka : Rule() { - val exclusions = listOf( - "com.github.fommil.netlib:all", "com.googlecode.netlib-java:netlib-java", "net.sourceforge.f2j:arpack_combined_all", - "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b", "nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime") - - override fun execute(context: ComponentMetadataContext) { - context.details.allVariants { - withDependencies { - removeIf { it.module.toString() in exclusions } - add("runtimeClasspath", "com.github.vbmacher:java-cup-runtime") - } - } - } - } - withModule("nz.ac.waikato.cms.weka:weka-dev") - } - // implementation("org.jzy3d:jzy3d-emul-gl:+") - // implementation("org.jzy3d:jzy3d-emul-gl-awt:+") - - implementation("junit:junit:4.4") - // implementation("org.hamcrest:hamcrest-core:1.2") -} - -tasks.detectCollisions { - // detectCollisions() // to detect on configuration time - // configurations.from(project.configurations.testRuntimeClasspath) -} - -publishing { - publications.register("maven") { - pom { - this as DefaultMavenPom - println(name.orNull) - println(licenses) - this.licenses { - license { - this.name = "Nich" - url = "URL" - comments = "com" - distribution = "dis" - } - } - println(licenses[0].name.orNull) - println(licenses[0].url.orNull) - println(licenses[0].comments.orNull) - println(licenses[0].distribution.orNull) - } - } -} \ No newline at end of file diff --git a/gradle/playground/settings.gradle.kts b/gradle/playground/settings.gradle.kts deleted file mode 100644 index b4fc304..0000000 --- a/gradle/playground/settings.gradle.kts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user manual at https://docs.gradle.org/7.2/userguide/multi_project_builds.html - */ - -rootProject.name = "gradle-playground" - -pluginManagement.repositories { - gradlePluginPortal() - maven("https://maven.scijava.org/content/repositories/releases") -} - -dependencyResolutionManagement { - - // repositories { .. } - versionCatalogs { - create("libs").from("org.scijava:gradle-catalog") - - // fails with "Could not resolve all artifacts for configuration 'incomingCatalogForLibs0'." - // create("libs").from(files("../catalog/build/version-catalog/libs.versions.toml")) - } - - includeBuild("../catalog") - // includeBuild("../../../java-ecosystem-capabilities") -} - -enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/gradle/settings.gradle.kts b/gradle/settings.gradle.kts deleted file mode 100644 index 3544372..0000000 --- a/gradle/settings.gradle.kts +++ /dev/null @@ -1,14 +0,0 @@ -// This is an empty umbrella build including all the component builds. -// This build is not necessarily needed. The component builds work independently. - -rootProject.name = "gradle" - -includeBuild("catalog") -includeBuild("platform") -includeBuild("manifest-dependencies") -includeBuild("declarative") -includeBuild("declarative-playground") -//includeBuild("playground") -//includeBuild("enforcer") - -enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") \ No newline at end of file diff --git a/pom.xml b/pom.xml index 9e66a61..f44e669 100644 --- a/pom.xml +++ b/pom.xml @@ -6824,83 +6824,57 @@ - - - - gradle-catalog - - - - gradle/platform - - - - - - org.codehaus.mojo - exec-maven-plugin - - - generate-gradle-catalog - generate-sources - - exec - - - ../gradlew - gradle/catalog - - generateCatalogAsToml - - - - - generate-gradle-platform - generate-sources - - exec - - - ../gradlew - gradle/platform - - generateMetadataFileForSciJavaPlatformPublication - - - - - - - - org.codehaus.mojo - build-helper-maven-plugin - - - attach-gradle-catalog - - package - - - attach-artifact - - - - - gradle/catalog/build/version-catalog/libs.versions.toml - toml - - - gradle/platform/build/publications/sciJavaPlatform/module.json - - module - - - - - - - - - - + + + + org.codehaus.mojo + exec-maven-plugin + + + generate-gradle-catalog-and-platform + generate-sources + + exec + + + ./gradlew + gradle-scijava + + generateCatalogAndPlatform + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-gradle-catalog + + package + + + attach-artifact + + + + + target/gradle/version-catalog/libs.versions.toml + toml + + + target/gradle/publications/pomScijava/module.json + + module + + + + + + + + From 5a7453b36da4b74ec55000db4fb7334c7fd9bbb4 Mon Sep 17 00:00:00 2001 From: Giuseppe Barbieri Date: Tue, 7 May 2024 10:24:43 +0200 Subject: [PATCH 12/22] idea files + gitignore --- .gitignore | 3 ++- .idea/misc.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 3f23446..831dc36 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /.project /.settings/ /target/ -/gradle-scijava/.gradle \ No newline at end of file +/gradle-scijava/.gradle +.idea \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index a4e60c8..48041f5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,7 +3,7 @@ - +