Marshall Schor created UIMA-3538:
------------------------------------

             Summary: increase stability of eclipse plugin builds by tightening 
version ranges
                 Key: UIMA-3538
                 URL: https://issues.apache.org/jira/browse/UIMA-3538
             Project: UIMA
          Issue Type: Improvement
          Components: Core Java Framework, Eclipse plugins, Tools
            Reporter: Marshall Schor
            Priority: Minor


We see frequently Jenkins builds which fail with messages like:

[ERROR] Failed to execute goal on project uimaj-ep-cas-editor: Could not 
resolve dependencies for project 
org.apache.uima:uimaj-ep-cas-editor:jar:2.4.3-SNAPSHOT: Failed to collect 
dependencies for [junit:junit:jar:4.5 (test), 
org.apache.uima:uimaj-core:jar:2.4.3-SNAPSHOT (compile), 
org.apache.uima:uimaj-tools:jar:2.4.3-SNAPSHOT (compile), 
org.eclipse.core:runtime:jar:[3.3.0.0,4.0.0) (provided), 
org.eclipse.core:resources:jar:[3.3.0.0,4.0.0) (provided), 
org.eclipse:ui:jar:[3.3.0.0,4.0.0) (provided), 
org.eclipse.swt:org.eclipse.swt.win32.win32.x86:jar:[3.2.0.0,4.0.0) (provided), 
org.eclipse.ui:ide:jar:[3.3.0.0,4.0.0) (provided), 
org.eclipse.ui:views:jar:[3.2.0.0,4.0.0) (provided), 
org.eclipse.ui.workbench:texteditor:jar:[3.3.0.0,4.0.0) (provided), 
org.eclipse.jface:text:jar:[3.3.0.0,4.0.0) (provided), 
org.eclipse.equinox:app:jar:[1.0.0,1.0.1) (compile)]: No versions available for 
org.eclipse.equinox:common:jar:[3.6.100,4.0.0) within specified range

only to succeed later with no obvious changes.  The change that happens, I 
think, is that the build runs on a different machine, where the build engine's 
".m2" local repo has different sets of Eclipse dependencies.

I've seen this happen on my local machine - if my .m2 repo gets some later 
versions of Eclipse plugins, then the cas editor build starts getting these 
kinds of errors.  What I'm guessing is happening is that the dependency 
resolution is getting to pick a later version of some artifact, and that 
artifact, in turn has dependencies on other ranges, that are higher, and not in 
the .m2 repo.  

I think this can be "solved" by doing something like a) getting a .m2 
configuration which works, and then doing a mvn dependency:tree and seeing what 
the versions are the dependencies, and then adding (all) or (some subset) of 
these with locked down dependency ranges to the list of dependencies - so that 
even if a higher-level version was available, it wouldn't be picked.  

The downside of this is that when these plugins are installed, they will pull 
older versions of the plugins into the .p2 repo, slightly bloating things, 
perhaps, unnecessarily.  It would be nice to be able to tell exactly which 
dependency artifact(s) needed to be "locked down" to avoid this issue, and only 
do that one, but I don't know how to determine that.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to