diff --git a/tycho-api/src/main/java/org/eclipse/tycho/ReactorProjectIdentities.java b/tycho-api/src/main/java/org/eclipse/tycho/ReactorProjectIdentities.java index 6dbda78107..6d3df43a89 100644 --- a/tycho-api/src/main/java/org/eclipse/tycho/ReactorProjectIdentities.java +++ b/tycho-api/src/main/java/org/eclipse/tycho/ReactorProjectIdentities.java @@ -46,4 +46,10 @@ public final int hashCode() { return Objects.hash(getArtifactId(), getGroupId(), getVersion()); } + @Override + public String toString() { + return "ReactorProjectIdentities [GroupId=" + getGroupId() + ", ArtifactId=" + getArtifactId() + ", Version=" + + getVersion() + ", Basedir=" + getBasedir() + "]"; + } + } diff --git a/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/P2GeneratorImpl.java b/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/P2GeneratorImpl.java index 7ba3c924d0..23e0b706f1 100644 --- a/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/P2GeneratorImpl.java +++ b/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/P2GeneratorImpl.java @@ -451,8 +451,7 @@ public Map generateMetadata(MavenProject project, boolean g PublisherOptions options = new PublisherOptions(); options.setGenerateDownloadStats(generateDownloadStatsProperty); options.setGenerateChecksums(generateChecksums); - Map generatedMetadata = generateMetadata(artifacts, options, targetDir); - return generatedMetadata; + return generateMetadata(artifacts, options, targetDir); } @Override diff --git a/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/TargetPlatformFactoryImpl.java b/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/TargetPlatformFactoryImpl.java index 8818eb0e24..51570d6cb3 100644 --- a/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/TargetPlatformFactoryImpl.java +++ b/tycho-core/src/main/java/org/eclipse/tycho/p2resolver/TargetPlatformFactoryImpl.java @@ -561,9 +561,9 @@ private Map getPreliminaryReactorPro Map> duplicateReactorUIs = new HashMap<>(); for (ReactorProject project : reactorProjects) { - Set projectIUs = project.getDependencyMetadata(DependencyMetadataType.INITIAL); - if (projectIUs == null) { + Set projectIUs = getPreliminaryReactorProjectUIs(project); + if (projectIUs == null || projectIUs.isEmpty()) { continue; } for (IInstallableUnit iu : projectIUs) { @@ -589,6 +589,19 @@ private Map getPreliminaryReactorPro return reactorUIs; } + private Set getPreliminaryReactorProjectUIs(ReactorProject project) { + String packaging = project.getPackaging(); + if (PackagingType.TYPE_ECLIPSE_PLUGIN.equals(packaging) || PackagingType.TYPE_ECLIPSE_FEATURE.equals(packaging) + || PackagingType.TYPE_ECLIPSE_TEST_PLUGIN.equals(packaging)) { + File artifact = project.getArtifact(); + if (artifact != null && artifact.isFile()) { + //the project was already build, use the seed units as they include anything maybe updated by p2-metadata mojo + return project.getDependencyMetadata(DependencyMetadataType.SEED); + } + } + return project.getDependencyMetadata(DependencyMetadataType.INITIAL); + } + private void applyFilters(TargetPlatformFilterEvaluator filter, Collection collectionToModify, Set reactorProjectUIs, ExecutionEnvironmentResolutionHints eeResolutionHints, Set shadowedIus) { diff --git a/tycho-its/projects/tycho-ds-dependency/.mvn/maven.config b/tycho-its/projects/tycho-ds-dependency/.mvn/maven.config new file mode 100644 index 0000000000..3e8679b48c --- /dev/null +++ b/tycho-its/projects/tycho-ds-dependency/.mvn/maven.config @@ -0,0 +1 @@ +-Dtycho.localArtifacts=ignore diff --git a/tycho-its/src/test/java/org/eclipse/tycho/test/reactor/BomCreationTest.java b/tycho-its/src/test/java/org/eclipse/tycho/test/reactor/BomCreationTest.java index 7ebd6df798..6ee02906bf 100644 --- a/tycho-its/src/test/java/org/eclipse/tycho/test/reactor/BomCreationTest.java +++ b/tycho-its/src/test/java/org/eclipse/tycho/test/reactor/BomCreationTest.java @@ -19,7 +19,9 @@ import java.io.File; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; +import java.util.Collection; import java.util.List; +import java.util.Optional; import org.apache.maven.it.Verifier; import org.cyclonedx.exception.ParseException; @@ -242,7 +244,8 @@ private void verifyDependency(Dependency parent, String ref) { } private void verifyDependency(List dependencies, String ref) { - if (dependencies.stream().noneMatch(dependency -> match(dependency, ref))) { + if (Optional.ofNullable(dependencies).stream().flatMap(Collection::stream) + .noneMatch(dependency -> match(dependency, ref))) { fail("No dependency found matching: " + ref); } }