eclipse-platform/eclipse.platform.releng

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".

merks commented

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.

merks commented

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.

#128 (comment)

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).

merks commented

@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:

image

This will be replaced with either -SNAPSHOT if the resolved bundle's Maven mapping specifies to produce a snapshot:

image

Or the empty string if it doesn't. So here is what it produces for a snapshot build of org.eclipse.ui.workbench:

image

Versus this for a release (non-snapshot) build:

image

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?

merks commented

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:

image

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:

# Set whether this is a snapshot build or not
snapshot="false"
for arg in "$@"; do
echo $arg
if [ "$arg" = "-snapshot" ]; then
snapshot="true"
fi
done
sed -e "s/snapshot=\".*\"/snapshot=\"${snapshot}\"/g" -i ${FILE_SDK_AGGR}

merks commented

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...

merks commented

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:

https://ci.eclipse.org/releng/view/Publish%20to%20Maven/

Thanks a lot.

Perhaps we should add such a verification test to the build:

This is the topic of #53