Maven SNAPSHOT for Eclipse project can't resolve dependencies
Closed this issue · 12 comments
$ mvn dependency:get -Dartifact=org.eclipse.platform:org.eclipse.ui.workbench:3.127.0-SNAPSHOT -DremoteRepositories=https://repo.eclipse.org/content/repositories/eclipse-snapshots/
[...]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 44.985 s
[INFO] Finished at: 2022-10-21T20:41:34+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:get (default-cli) on project payara-jdk-tester: Couldn't download artifact: Missing:
[ERROR] ----------
[ERROR] 1) org.eclipse.platform:org.eclipse.core.jobs:jar:3.13.200
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.core.jobs -Dversion=3.13.200 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.core.jobs -Dversion=3.13.200 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.core.jobs:jar:3.13.200
[ERROR]
[ERROR] 2) org.eclipse.platform:org.eclipse.equinox.common:jar:3.17.0
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.equinox.common -Dversion=3.17.0 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.equinox.common -Dversion=3.17.0 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.core.runtime:jar:3.26.0
[ERROR] 4) org.eclipse.platform:org.eclipse.equinox.common:jar:3.17.0
[ERROR]
[ERROR] 3) org.eclipse.platform:org.eclipse.osgi:jar:3.18.200
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.osgi -Dversion=3.18.200 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.osgi -Dversion=3.18.200 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.core.runtime:jar:3.26.0
[ERROR] 4) org.eclipse.platform:org.eclipse.osgi:jar:3.18.200
[ERROR]
[ERROR] 4) org.eclipse.platform:org.eclipse.jface:jar:3.28.0
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.jface -Dversion=3.28.0 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.jface -Dversion=3.28.0 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.jface:jar:3.28.0
[ERROR]
[ERROR] 5) org.eclipse.platform:org.eclipse.swt:jar:3.121.100
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.swt -Dversion=3.121.100 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.swt -Dversion=3.121.100 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.swt:jar:3.121.100
[ERROR]
[ERROR] 6) org.eclipse.platform:org.eclipse.jface.databinding:jar:1.14.0
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.jface.databinding -Dversion=1.14.0 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.jface.databinding -Dversion=1.14.0 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.jface.databinding:jar:1.14.0
[ERROR]
[ERROR] 7) org.eclipse.platform:org.eclipse.e4.core.services:jar:2.3.400
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.core.services -Dversion=2.3.400 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.core.services -Dversion=2.3.400 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.core.services:jar:2.3.400
[ERROR]
[ERROR] 8) org.eclipse.platform:org.eclipse.e4.ui.workbench.swt:jar:0.16.700
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.workbench.swt -Dversion=0.16.700 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.workbench.swt -Dversion=0.16.700 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.ui.workbench.swt:jar:0.16.700
[ERROR]
[ERROR] 9) org.eclipse.platform:org.eclipse.e4.ui.css.swt.theme:jar:0.13.200
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.css.swt.theme -Dversion=0.13.200 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.css.swt.theme -Dversion=0.13.200 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.ui.css.swt.theme:jar:0.13.200
[ERROR]
[ERROR] 10) org.eclipse.platform:org.eclipse.e4.ui.css.swt:jar:0.14.700
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.css.swt -Dversion=0.14.700 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.css.swt -Dversion=0.14.700 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.ui.css.swt:jar:0.14.700
[ERROR]
[ERROR] 11) org.eclipse.platform:org.eclipse.e4.ui.workbench.addons.swt:jar:1.4.500
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.workbench.addons.swt -Dversion=1.4.500 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.workbench.addons.swt -Dversion=1.4.500 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.ui.workbench.addons.swt:jar:1.4.500
[ERROR]
[ERROR] 12) org.eclipse.platform:org.eclipse.e4.ui.workbench.renderers.swt:jar:0.15.700
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.workbench.renderers.swt -Dversion=0.15.700 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.platform -DartifactId=org.eclipse.e4.ui.workbench.renderers.swt -Dversion=0.15.700 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.ui.workbench.renderers.swt:jar:0.15.700
[ERROR]
[ERROR] ----------
[ERROR] 12 required artifacts are missing.
[ERROR]
[ERROR] for artifact:
[ERROR] org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR]
[ERROR] from the specified remote repositories:
[ERROR] central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false),
[ERROR] temp (https://repo.eclipse.org/content/repositories/eclipse-snapshots/, releases=true, snapshots=true)
The reason since to be that since we've replaced the dependency version ranges with actual dependencies, the -SNAPSHOT
are not added to other artifacts coming from the same "reactor".
I did some analysis including using -X to see that's going on. Firstly this document's table has some useful details:
https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN8903
For the handling of 1.0
as a version range it mentions this:
Various Maven plug-ins may interpret this differently, so it is safer to use one of the other, more specific options
Looking at the -X information when testing with a local aggregated repository I see this in the log:
org.apache.maven.artifact.versioning.OverConstrainedVersionException: Couldn't find a version in [3.12.0, 3.13.0, 3.14.0, 3.15.0, 3.15.100, 3.15.200, 3.15.300, 3.16.0, 3.17.0, 3.17.100, 3.18.0, 3.19.0, 3.20.0, 3.20.100, 3.22.0, 3.23.0, 3.24.0, 3.24.100, 3.25.0, 3.26.0, 3.26.100-SNAPSHOT] to match range [3.26.100,)
Which made me think, what the heck! In any case, it seems that the plugin is treating 1.0 as [1.0, )
which is fine and good, so why doesn't this work?
I wrote this to do some testing:
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
public class Test {
public static void main(String[] args) throws InvalidVersionSpecificationException {
DefaultArtifactVersion version = new DefaultArtifactVersion("1.0.0-SNAPSHOT");
DefaultArtifactVersion version2 = new DefaultArtifactVersion("1.0.0");
int compareTo = version.compareTo(version2);
System.out.println("Version1: " + version + " Version2 " + version2 + " compareTo= " + compareTo);
for (String spec : new String[] { "[1.0.0,)", "1.0.0", "1.0.0-alpha", "1.0.0-beta", "1.0.0-milestone",
"1.0.0-rc", "1.0.0-snapshot", "1.0.0-sp" }) {
VersionRange versionRange = VersionRange.createFromVersionSpec(spec);
boolean containsVersion = versionRange.containsVersion(version);
System.out.println("VersionRange: " + versionRange + " contains " + version + " == " + containsVersion);
}
}
}
It prints this:
Version1: 1.0.0-SNAPSHOT Version2 1.0.0 compareTo= -1
VersionRange: [1.0.0,) contains 1.0.0-SNAPSHOT == false
VersionRange: 1.0.0 contains 1.0.0-SNAPSHOT == true
VersionRange: 1.0.0-alpha contains 1.0.0-SNAPSHOT == true
VersionRange: 1.0.0-beta contains 1.0.0-SNAPSHOT == true
VersionRange: 1.0.0-milestone contains 1.0.0-SNAPSHOT == true
VersionRange: 1.0.0-rc contains 1.0.0-SNAPSHOT == true
VersionRange: 1.0.0-snapshot contains 1.0.0-SNAPSHOT == true
VersionRange: 1.0.0-sp contains 1.0.0-SNAPSHOT == true
So note in particular that 1.0.0
as a version range in this implementation is not the same as [1.0.0,)
and that the latter excludes the version 1.0.0-SNAPSHOT
. Also note that as an artifact version, 1.0.0-SNAPSHOT
< 1.0.0
. It's certainly inconvenient that the version range 1.0.0
isn't handled exactly as this implementation handles it, i.e., VersionRange: 1.0.0 contains 1.0.0-SNAPSHOT == true
.
I will try to find a solution...
So note in particular that
1.0.0
as a version range in this implementation is not the same as[1.0.0,)
1.0.0
is not a version range! It is "It generally means 1.0 or a later version, if 1.0 is not available" also note that SNAPSHOT has special meaning and handling in maven itself!
It might work to use [3.26,3.27)
bust as you noticed (and I reported from time to time) version ranges not always work very well when the repository for example do not promote all versions.
Because of this ist would be much more usefulll to produce good meta-data at the first place as for example demonstrated at p2 / equinox with ci friendly versions.
So note in particular that
1.0.0
as a version range in this implementation is not the same as[1.0.0,)
1.0.0
is not a version range! It is "It generally means 1.0 or a later version, if 1.0 is not available" also note that SNAPSHOT has special meaning and handling in maven itself!
It's in the table that I referenced (and from which you quote the statement about the intended behavior). It's also a valid argument to org.apache.maven.artifact.versioning.VersionRange
that some things think it's a version range. In any case, it's not a point worth arguing about.
It might work to use
[3.26,3.27)
bust as you noticed (and I reported from time to time) version ranges not always work very well when the repository for example do not promote all versions.
That might well be the case, but it's not what @mickaelistria asked here where you did not share your opinion.
Because of this ist would be much more usefulll to produce good meta-data at the first place as for example demonstrated at p2 / equinox with ci friendly versions.
I'm not sure concretely what you are suggesting here though.
The point is that the meta-data is still wrong and its not the -SNAPSHOT to blame here or any version range.
If I look here: https://mvnrepository.com/artifact/org.eclipse.platform/org.eclipse.core.jobs there is no version 3.13.200
and maven correctly complains that we state we have compiled against this version, while it is actually 3.13.200-SNAPSHOT
So either we should have 3.13.200-SNAPSHOT
as a dependency version here, or deploy a 3.13.200
version to the nexus....
Also please see:
https://cwiki.apache.org/confluence/display/MAVENOLD/Dependency+Mediation+and+Conflict+Resolution
https://github.com/apache/maven/blob/maven-3.3.9/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java#L149
Resolution of dependency ranges should not resolve to a snapshot (development version) unless it is included as an explicit boundary. There is no need to compile against development code unless you are explicitly using a new feature, under which the snapshot will become the lower bound of your version specification. As releases are considered newer than the snapshot they belong to, they will be chosen over an old snapshot if found.
Thinking a bit about that it might work to use 3.13.200,3.13.200-SNAPSHOT
as version specifier to include snapshot versions as well... but then there should better be an option to not include such versions when releasing to central (as far as I know central forbids SNAPSHOT references explicitly).
@laeubi Yes, what you stated above are the conclusions that I came to from the tests that I showed.
So I modified the aggregator such that each dependency mapping can now specify -qualifier
:
This will be replaced with either -SNAPSHOT
if the resolved bundle's Maven mapping specifies to produce a snapshot:
Or the empty string if it doesn't. So here is what it produces for a snapshot build of org.eclipse.ui.workbench
:
Versus this for a release (non-snapshot) build:
This will be replaced with either
-SNAPSHOT
if the resolved bundle's Maven mapping specifies to produce a snapshot:
Looks good, how do you know if it is a snapshot or not?
This will be replaced with either
-SNAPSHOT
if the resolved bundle's Maven mapping specifies to produce a snapshot:Looks good, how do you know if it is a snapshot or not?
The resolved bundle's Maven mapping specifies to produce a snapshot or not:
It's like this in the XML
<mavenMappings namePattern="(org\.eclipse\.jdt)\.core\.compiler\.batch" groupId="$1" artifactId="ecj" snapshot="false"/>
<mavenMappings namePattern="(org\.eclipse\.jdt)(.*)" groupId="$1" artifactId="$1$2" snapshot="false"/>
<mavenMappings namePattern="(org\.eclipse\.pde)(.*)" groupId="$1" artifactId="$1$2" snapshot="false"/>
<mavenMappings namePattern="(org\.eclipse)((?!(\.emf|\.jetty|\.ecf)).*)$" groupId="$1.platform" artifactId="$1$2" snapshot="false"/>
The build sets those to true when it's asked to produce a snapshot build:
eclipse.platform.releng/publish-to-maven-central/CBIaggregator.sh
Lines 58 to 66 in 9880db1
With a new build I have a different (new) problem:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:get (default-cli) on project standalone-pom: Couldn't download artifact: Missing:
[ERROR] ----------
[ERROR] 1) org.eclipse.birt.runtime:org.w3c.css.sac:jar:1.3.1
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=org.eclipse.birt.runtime -DartifactId=org.w3c.css.sac -Dversion=1.3.1 -Dpackaging=jar -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=org.eclipse.birt.runtime -DartifactId=org.w3c.css.sac -Dversion=1.3.1 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR] 2) org.eclipse.platform:org.eclipse.ui.workbench:jar:3.127.0-SNAPSHOT
[ERROR] 3) org.eclipse.platform:org.eclipse.e4.ui.css.swt.theme:jar:0.13.200-SNAPSHOT
[ERROR] 4) org.eclipse.birt.runtime:org.w3c.css.sac:jar:1.3.1
[ERROR]
[ERROR] ----------
[ERROR] 1 required artifact is missing.
[ERROR]
[ERROR] for artifact:
[ERROR] org.apache.maven.plugins:maven-downloader-plugin:jar:1.0
[ERROR]
[ERROR] from the specified remote repositories:
[ERROR] central-id (https://repo1.maven.org/maven2, releases=true, snapshots=false),
I think I know the cause...
For faster progress I built the aggregation locally (it generates to the home folder) and I clean it up to remove all parts that are not actually published/promoted to better replicate the behavior of the promoted repository. Then I tested getting the dependencies of bundle with many dependencies from each of platform, pde, and jdt. Note that -Dosgi.platform=win32.win32.x86_64
helps SWT resolve its fragment. I also did the work in a "fake" user.home
so that I can clean up the .m2's repositories each time.
I do it like this:
set -x
cd /c/Users/merks/build/final
rm -rf a com* eclipse-* jak* javax* juni* net* tool* org/ap* org/api* org/ass* org/bouncycastle/ org/junit org/mockito/ org/objenesis/ org/osgi org/ow2/ org/tukaani/ org/w3c/ org/opentest4j org/slf4j/ org/eclipse/birt org/eclipse/ecf org/eclipse/jetty/ org/eclipse/orbit/ org/eclipse/emf/
cd -
repo="file:/C:/Users/merks/build/final"
repo="https://repo.eclipse.org/content/repositories/eclipse-snapshots/"
snapshot="-SNAPSHOT"
#snapshot=""
rm -rf .m2/repository
mvn dependency:get -X -Duser.home="D:/Users/merks/test-mvn" -Dosgi.platform=win32.win32.x86_64 -U -DoverWriteSnapshots=true -Dartifact=org.eclipse.jdt:org.eclipse.jdt.ui:3.27.100$snapshot -DremoteRepositories=$repo 2>&1 | tee platform.log
rm -rf .m2/repository
mvn dependency:get -X -Duser.home="D:/Users/merks/test-mvn" -Dosgi.platform=win32.win32.x86_64 -U -DoverWriteSnapshots=true -Dartifact=org.eclipse.pde:org.eclipse.pde.ui:3.13.700$snapshot -DremoteRepositories=$repo 2>&1 | tee jdt.log
rm -rf .m2/repository
mvn dependency:get -X -Duser.home="D:/Users/merks/test-mvn" -Dosgi.platform=win32.win32.x86_64 -U -DoverWriteSnapshots=true -Dartifact=org.eclipse.platform:org.eclipse.ui.workbench:3.127.0$snapshot -DremoteRepositories=$repo 2>&1 | tee pde.log
I can easily update this to test the actual latest content of this site:
https://repo.eclipse.org/content/repositories/eclipse-snapshots/
All three successfully resolve all their dependencies now:
$tail *.log
==> jdt.log <==
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\org\eclipse\pde\org.eclipse.pde.launching\3.10.200-SNAPSHOT\org.eclipse.pde.launching-3.10.200-20221023.071913-40.jar.lastUpdated
Downloaded from temp: https://repo.eclipse.org/content/repositories/eclipse-snapshots/org/eclipse/platform/org.eclipse.ui.genericeditor/1.2.300-SNAPSHOT/org.eclipse.ui.genericeditor-1.2.300-20221023.080056-32.jar (158 kB at 393 kB/s)
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\org\eclipse\platform\org.eclipse.ui.genericeditor\1.2.300-SNAPSHOT\_remote.repositories
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\org\eclipse\platform\org.eclipse.ui.genericeditor\1.2.300-SNAPSHOT\org.eclipse.ui.genericeditor-1.2.300-20221023.080056-32.jar.lastUpdated
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:31 min
[INFO] Finished at: 2022-10-23T10:40:47+02:00
[INFO] ------------------------------------------------------------------------
==> pde.log <==
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\net\java\dev\jna\jna-platform\5.12.1\jna-platform-5.12.1.jar.lastUpdated
Downloaded from central-id: https://repo1.maven.org/maven2/com/ibm/icu/icu4j/71.1/icu4j-71.1.jar (14 MB at 9.0 MB/s)
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\com\ibm\icu\icu4j\71.1\_remote.repositories
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\com\ibm\icu\icu4j\71.1\icu4j-71.1.jar.lastUpdated
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:15 min
[INFO] Finished at: 2022-10-23T10:42:05+02:00
[INFO] ------------------------------------------------------------------------
==> platform.log <==
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\org\eclipse\jdt\org.eclipse.jdt.core.manipulation\1.16.250-SNAPSHOT\org.eclipse.jdt.core.manipulation-1.16.250-20221023.071917-31.jar.lastUpdated
Downloaded from central-id: https://repo1.maven.org/maven2/org/bouncycastle/bcprov-jdk18on/1.72/bcprov-jdk18on-1.72.jar (11 MB at 2.9 MB/s)
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\org\bouncycastle\bcprov-jdk18on\1.72\_remote.repositories
[DEBUG] Writing tracking file D:\Users\merks\test-mvn\.m2\repository\org\bouncycastle\bcprov-jdk18on\1.72\bcprov-jdk18on-1.72.jar.lastUpdated
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:06 min
[INFO] Finished at: 2022-10-23T10:38:14+02:00
[INFO] ------------------------------------------------------------------------
I also tested this locally for a release build and that too is successful.
Perhaps we should add such a verification test to the build: