-
Notifications
You must be signed in to change notification settings - Fork 238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add missing dependencies to Fiji build system #37
Comments
To clarify: anything we want to bundle with Fiji, but do not want to "inflict" on downstream projects that add |
Here is a diff of the latest Fiji distribution compared to a Fiji whose JAR files are populated from scratch via a diff --git a/update-site.txt b/fiji-git.txt
index a720c6d..768a1ac 100644
--- a/update-site.txt
+++ b/fiji-git.txt
@@ -3,22 +3,18 @@
./jars/T2-TreelineGraph-1.0.2.jar
./jars/VIB-lib-2.0.1.jar
./jars/VectorString-1.0.2.jar
-./jars/ant-junit.jar
-./jars/ant-launcher.jar
-./jars/ant-nodeps.jar
-./jars/ant.jar
./jars/args4j-2.0.25.jar
./jars/asm-4.0.jar
./jars/asm-analysis-4.0.jar
./jars/asm-commons-4.0.jar
./jars/asm-tree-4.0.jar
./jars/asm-util-4.0.jar
-./jars/autocomplete.jar
./jars/base64-2.3.8.jar
./jars/batik-1.8.jar
./jars/bcmail-jdk14-138.jar
./jars/bcprov-jdk14-138.jar
./jars/bigdataviewer-core-1.0.0.jar
+./jars/bio-formats/bio-formats_plugins-5.0.6.jar
./jars/bio-formats/formats-api-5.0.6.jar
./jars/bio-formats/formats-bsd-5.0.6.jar
./jars/bio-formats/formats-common-5.0.6.jar
@@ -36,12 +32,9 @@
./jars/commons-lang3-3.1.jar
./jars/commons-logging-1.1.1.jar
./jars/commons-math3-3.2.jar
-./jars/edu_mines_jtk.jar
./jars/eventbus-1.4.jar
-./jars/fake-2.0.0-SNAPSHOT.jar
./jars/fiji-compat-2.0.1.jar
./jars/fiji-lib-2.1.0.jar
-./jars/fiji-scripting-2.0.0-SNAPSHOT.jar
./jars/gentyref-1.1.0.jar
./jars/groovy-2.3.6.jar
./jars/gson-2.2.4.jar
@@ -49,7 +42,6 @@
./jars/ij1-patcher-0.11.1.jar
./jars/imagej-2.0.0-rc-23.jar
./jars/imagej-common-0.12.1.jar
-./jars/imagej-launcher-3.1.6.jar
./jars/imagej-legacy-0.10.2.jar
./jars/imagej-ops-0.8.0.jar
./jars/imagej-plugins-commands-0.4.1.jar
@@ -66,25 +58,21 @@
./jars/imglib2-algorithm-fft-0.1.1.jar
./jars/imglib2-algorithm-gpl-0.1.2.jar
./jars/imglib2-ij-2.0.0-beta-29.jar
-./jars/imglib2-ops-2.0.0-beta-26.jar
./jars/imglib2-realtransform-2.0.0-beta-28.jar
./jars/imglib2-roi-0.2.0.jar
./jars/imglib2-ui-2.0.0-beta-28.jar
./jars/invokebinder-1.2.jar
./jars/itext-2.1.5.jar
./jars/itextpdf-5.1.1.jar
-./jars/jacl.jar
./jars/jai-codec-1.1.3.jar
./jars/jai-core-1.1.3.jar
-./jars/jama-1.0.3.jar
+./jars/jama-1.0.2.jar
./jars/java-cup-0.11a.jar
./jars/javac-1.6.0.24-ubuntu-fiji2.jar
./jars/javassist-3.16.1-GA.jar
./jars/jcodings-1.0.10.jar
./jars/jcommon-1.0.17.jar
./jars/jdatepicker-1.3.2.jar
-./jars/jdom-2.0.2.jar
-./jars/jdom-contrib.jar
./jars/jdom2-2.0.5.jar
./jars/jep-2.4.2.jar
./jars/jffi-1.2.7-native.jar
@@ -104,18 +92,16 @@
./jars/jnr-posix-3.0.1.jar
./jars/jnr-unixsocket-0.3.jar
./jars/jnr-x86asm-1.0.2.jar
-./jars/joda-time-2.3.jar
+./jars/joda-time-2.2.jar
./jars/joni-2.1.1.jar
./jars/jpedalSTD-2.80b11.jar
./jars/jruby-core-1.7.12.jar
./jars/jruby-stdlib-1.7.12.jar
-./jars/js.jar
./jars/jsch-0.1.49.jar
./jars/jython-shaded-2.5.3.jar
./jars/jzlib-1.1.2.jar
./jars/kryo-2.21-shaded.jar
./jars/legacy-imglib1-1.0.0-DEPRECATED.jar
-./jars/log4j-1.2.17.jar
./jars/logback-classic-1.1.1.jar
./jars/logback-core-1.1.1.jar
./jars/mapdb-1.0.3.jar
@@ -162,10 +148,8 @@
./jars/snakeyaml-1.13.jar
./jars/spim_data-1.0.0-beta-3.jar
./jars/swing-checkbox-tree-1.0.0.jar
-./jars/tools-1.4.2.jar
./jars/udunits-4.3.18.jar
./jars/wavelets-2.0.0.jar
-./jars/weave_jy2java-2.0.0-SNAPSHOT.jar
./jars/weka-dev-3.7.11.jar
./jars/xml-apis-1.3.04.jar
./jars/yecht-1.0.jar
@@ -182,7 +166,6 @@
./plugins/3D_Blob_Segmentation-2.0.2.jar
./plugins/3D_Objects_Counter-2.0.0.jar
./plugins/3D_Viewer-3.0.1.jar
-./plugins/Algorithm_Launcher.jar
./plugins/AnalyzeSkeleton_-2.0.3.jar
./plugins/Analyze_Reader_Writer-2.0.0.jar
./plugins/Anisotropic_Diffusion_2D-2.0.0.jar
@@ -190,18 +173,15 @@
./plugins/Arrow_-2.0.1.jar
./plugins/Auto_Threshold-1.16.0.jar
./plugins/BalloonSegmentation_-2.0.0.jar
-./plugins/BeanShell_Interpreter-2.0.0-SNAPSHOT.jar
./plugins/Bug_Submitter-2.0.1.jar
-./plugins/CLI_-2.0.0-SNAPSHOT.jar
./plugins/CPU_Meter-2.0.0.jar
./plugins/Calculator_Plus-2.0.0.jar
-./plugins/Clojure_Interpreter-2.0.0-SNAPSHOT.jar
./plugins/Colocalisation_Analysis-2.0.1.jar
./plugins/Color_Histogram-2.0.6.jar
./plugins/Color_Inspector_3D-2.3.1.jar
./plugins/Colour_Deconvolution-2.0.0.jar
./plugins/CorrectBleach_-2.0.1.jar
-./plugins/Descriptor_based_registration-2.0.7.jar
+./plugins/Descriptor_based_registration-2.0.0.jar
./plugins/Dichromacy_-2.0.0.jar
./plugins/Differentials_-2.0.0.jar
./plugins/Directionality_-2.0.1.jar
@@ -224,12 +204,7 @@
./plugins/Image_Expression_Parser-3.0.0.jar
./plugins/Interactive_3D_Surface_Plot-2.31.1.jar
./plugins/IsoData_Classifier-2.0.0.jar
-./plugins/JRuby_Interpreter-2.0.0-SNAPSHOT.jar
-./plugins/Javascript_-2.0.0-SNAPSHOT.jar
-./plugins/Jython_Interpreter-2.0.0-SNAPSHOT.jar
./plugins/Kuwahara_Filter-2.0.0.jar
-./plugins/LSM_Reader.jar
-./plugins/LSM_Toolbox.jar
./plugins/Lasso_and_Blow_Tool-2.0.1.jar
./plugins/Linear_Kuwahara-2.0.0.jar
./plugins/LocalThickness_-3.1.1.jar
@@ -245,9 +220,8 @@
./plugins/RATS_-2.0.0.jar
./plugins/RandomJ_-1.5.2.jar
./plugins/Reconstruct_Reader-2.0.1.jar
-./plugins/Refresh_Javas-2.0.0-SNAPSHOT.jar
./plugins/SPIM_Opener-2.0.1.jar
-./plugins/SPIM_Registration-2.0.8.jar
+./plugins/SPIM_Registration-2.0.0.jar
./plugins/Samples_-2.0.0.jar
./plugins/Series_Labeler-2.0.0.jar
./plugins/SheppLogan_-2.0.0.jar
@@ -268,8 +242,8 @@
./plugins/Time_Stamper-2.0.0.jar
./plugins/ToAST_-25.0.1.jar
./plugins/TopoJ_-2.0.0.jar
-./plugins/TrackMate_-2.7.1.jar
-./plugins/Trainable_Segmentation-2.1.8.jar
+./plugins/TrackMate_-2.7.0.jar
+./plugins/Trainable_Segmentation-2.1.6.jar
./plugins/TrakEM2_-1.0d.jar
./plugins/TrakEM2_Archipelago-2.0.0.jar
./plugins/TransformJ_-2.8.2.jar
@@ -283,10 +257,8 @@
./plugins/Volume_Calculator-1.0.1.jar
./plugins/Volume_Viewer-2.01.1.jar
./plugins/bUnwarpJ_-2.6.1.jar
-./plugins/bigdataviewer_fiji-1.0.2.jar
-./plugins/bio-formats_plugins-5.0.6.jar
+./plugins/bigdataviewer_fiji-1.0.0.jar
./plugins/blockmatching_-2.0.3.jar
-./plugins/ij-ImageIO_.jar
./plugins/level_sets-1.0.1.jar
./plugins/mpicbg_-0.6.1.jar
./plugins/panorama_-2.0.0.jar |
The following component versions are present on the update site: * TrackMate_ 2.7.1 * Trainable_Segmentation 2.1.8 Hence, these should also be the versions declared in pom-fiji. See: fiji/fiji#37
The following component versions are present on the update site: * Descriptor_based_registration 2.0.7 * SPIM_Registration 2.0.8 Hence, these should also be the versions declared here. See: fiji/fiji#37
The LSM Toolbox ships with Fiji, and we want the POM to reflect that. See: #37
The discrepancies fall into the following categories:
+./jars/bio-formats/bio-formats_plugins-5.0.6.jar
-./plugins/bio-formats_plugins-5.0.6.jar The -./jars/imagej-launcher-3.1.6.jar This library is missing because it is actually a renamed NAR archive. We need to somehow improve the way that ImageJ and NAR work together. -./jars/imglib2-ops-2.0.0-beta-26.jar
-./jars/jdom-2.0.2.jar
-./jars/edu_mines_jtk.jar These JAR files were still hanging around, even though they were at the same time replaced with newer JARs: the -./jars/jama-1.0.3.jar
+./jars/jama-1.0.2.jar
-./jars/joda-time-2.3.jar
+./jars/joda-time-2.2.jar Somehow, older versions of these libraries are being selected by Maven. Somewhere in the dependency hierarchy are components which depend on the old versions. The solution is to manage the version of these libraries in parent POMs, and use the managed version consistently throughout the entire SciJava software stack. -./plugins/Descriptor_based_registration-2.0.7.jar
+./plugins/Descriptor_based_registration-2.0.0.jar
-./plugins/SPIM_Registration-2.0.8.jar
+./plugins/SPIM_Registration-2.0.0.jar
-./plugins/TrackMate_-2.7.1.jar
+./plugins/TrackMate_-2.7.0.jar
-./plugins/Trainable_Segmentation-2.1.8.jar
+./plugins/Trainable_Segmentation-2.1.6.jar
-./plugins/bigdataviewer_fiji-1.0.2.jar
+./plugins/bigdataviewer_fiji-1.0.0.jar These discrepancies are simply caused by plugin developers uploading new releases of their components without a corresponding bump in the relevant POM parent (i.e., -./jars/fake-2.0.0-SNAPSHOT.jar
-./jars/fiji-scripting-2.0.0-SNAPSHOT.jar
-./jars/weave_jy2java-2.0.0-SNAPSHOT.jar
-./plugins/Algorithm_Launcher.jar
-./plugins/BeanShell_Interpreter-2.0.0-SNAPSHOT.jar
-./plugins/CLI_-2.0.0-SNAPSHOT.jar
-./plugins/Clojure_Interpreter-2.0.0-SNAPSHOT.jar
-./plugins/JRuby_Interpreter-2.0.0-SNAPSHOT.jar
-./plugins/Javascript_-2.0.0-SNAPSHOT.jar
-./plugins/Jython_Interpreter-2.0.0-SNAPSHOT.jar
-./plugins/Refresh_Javas-2.0.0-SNAPSHOT.jar
-./plugins/ij-ImageIO_.jar These components are all obsolete and unmaintained, with no further updates planned. In particular, the various scripting interpreter components have been replaced by a unified Script Interpreter component included with the ImageJ2 Swing user interface. -./jars/ant-junit.jar
-./jars/ant-launcher.jar
-./jars/ant-nodeps.jar
-./jars/ant.jar
-./jars/autocomplete.jar
-./jars/jacl.jar
-./jars/jdom-contrib.jar
-./jars/js.jar
-./jars/log4j-1.2.17.jar We could either stop shipping these libraries with Fiji altogether, or else declare them as optional runtime dependencies in -./plugins/LSM_Reader.jar
-./plugins/LSM_Toolbox.jar Fiji has shipped the LSM Toolbox since basically the beginning, and we even Mavenized it, but it was not declared in the toplevel -./jars/tools-1.4.2.jar We need to stop shipping this. It is actually a licensing violation to redistribute it. The |
Somehow my analysis above missed the components which are part of Also, for checking what has changed in a Fiji installation, the following invocation is really useful: Contents/MacOS/ImageJ-macosx --update upload-complete-site --simulate Fiji |
Sorry, this got lost in the noise that is my inbox. Yeah, I think it'd be awesome to have that be part of core Fiji. On Wed, Feb 4, 2015 at 2:51 PM, Curtis Rueden [email protected]
|
@larrylindsey Cool, thanks for the reply. I uploaded the following plugins to the core Fiji update site:
|
JS files are placed in plugins/Scripts/Plugins/AutoRun/, thus showing up in an entry called "AutoRun" in the "Plugins" menu.
It seems I never actually removed |
There now exists a script Remaining JAR discrepancies0.0.0-STUB filesThese files mark obsolete JARs, working around a limitation in the ImageJ Updater. The Maven-dependency version of Fiji does not and should not have these dependencies. List of 0.0.0-STUB.jar files
Retroweaver JARs
These are still shipped for theoretical backwards compatibility, but should not be part of Fiji's dependency tree. In practice it is likely they could be removed with zero impact on users, but there is also little reason to do so, since they are tucked away in their own folder. XML functionalityThere are two JARs shipped with Fiji, which are not part of Maven Fiji's dependency tree, but which are required for Bio-Formats to behave properly:
This is really a problem with pom-scijava, not this toplevel fiji component, because those dependencies are in fact necessary at runtime and should be inherited from Fiji's dependencies. I.e.: the correct solution is not to add explicit dependencies on them here at the fiji level. I have filed scijava/pom-scijava#219 to track this issue. ConclusionThere is not really anything meaningfully left to be done from a Maven dependency standpoint with respect to Fiji versus the Fiji.app distribution from the Java-8 update site. There are still things that could maybe be improved, such as wrapping the non-JAR dependencies into JAR files which can be depended upon via Maven, such that e.g. |
Some JAR files are present on the Fiji update site and hence available in the Fiji user distribution, but not copied into the Fiji source build's
jars
folder because nothing insrc-plugins
actually depends on them (so MiniMaven has no way of knowing to copy them). Perhaps they were uploaded to the update site manually as libraries available for use within Fiji, or perhaps they were once dependencies of Fiji plugins but no longer. Either way, they are on the update site but not known to the Fiji build system.The solution is to add them as dependencies with
<scope>runtime</scope>
to the toplevelfiji
component. This clues in Maven and MiniMaven that these JARs are important to Fiji, and should be copied into thejars
folder, bringing Fiji-from-source more in line with Fiji-from-updater.We should be careful to use
runtime
scope. In particular, dependencies such asslf4j-log4j12
andlog4j
need to be declared in this fashion, and in the toplevelfiji
component. Otherwise, anything depending on said library will drag in the hardcoded log4j SLF4J binding, which is undesirable (this choice should be left to downstream consumers whenever possible).The text was updated successfully, but these errors were encountered: