summaryrefslogtreecommitdiffstats
path: root/bundle-plugin
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-07-17 12:11:53 +0200
committergjoranv <gv@verizonmedia.com>2019-07-17 12:16:08 +0200
commit8844a8dce19e20c6dce434a8675a4646384f1a52 (patch)
tree02213d3b6add590ee02c425729e195edcc80c680 /bundle-plugin
parentb41bd18a422633d23504c36fd3da650dc8ac467c (diff)
Log missing packages only if jdisc_core is provided.
+ Log warning if jdisc_core is _not_ provided. + Extract method for finding set diff and "java." filtering.
Diffstat (limited to 'bundle-plugin')
-rw-r--r--bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java38
1 files changed, 23 insertions, 15 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java
index 130e726f3d4..9ae732941f7 100644
--- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java
+++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/mojo/GenerateOsgiManifestMojo.java
@@ -118,8 +118,13 @@ public class GenerateOsgiManifestMojo extends AbstractMojo {
.map(e -> "(" + e.getPackageNames().toString() + ", " + e.version().orElse("")).collect(Collectors.joining(", ")));
}
- // TODO: skip if jdisc_core is not in class path?
- logMissingPackages(publicPackagesFromProvidedJars, projectPackages, compileJarsPackages, includedPackages);
+ if (hasJdiscCoreProvided(artifactSet.getJarArtifactsProvided())) {
+ // If jdisc_core is not provided, log output may contain packages that _are_ available runtime.
+ logMissingPackages(publicPackagesFromProvidedJars, projectPackages, compileJarsPackages, includedPackages);
+ } else {
+ getLog().warn("This project does not have jdisc_core as provided dependency, so the " +
+ "generated 'Import-Package' OSGi header may be missing important packages.");
+ }
Map<String, Import> calculatedImports = calculateImports(includedPackages.referencedPackages(),
includedPackages.definedPackages(),
@@ -138,35 +143,38 @@ public class GenerateOsgiManifestMojo extends AbstractMojo {
}
}
+ private boolean hasJdiscCoreProvided(List<Artifact> providedArtifacts) {
+ return providedArtifacts.stream().anyMatch(artifact -> artifact.getArtifactId().equals("jdisc_core"));
+ }
+
private void logMissingPackages(AnalyzeBundle.PublicPackages publicPackagesFromProvidedJars, PackageTally projectPackages, PackageTally compileJarPackages, PackageTally includedPackages) {
Set<String> exportedPackagesFromProvidedDeps = publicPackagesFromProvidedJars.exports
.stream()
.map(Export::getPackageNames)
.flatMap(Collection::stream)
.collect(Collectors.toSet());
- getLog().debug("Exported packages of provided deps: " + exportedPackagesFromProvidedDeps);
-
Set<String> definedAndExportedPackages = Sets.union(includedPackages.definedPackages(), exportedPackagesFromProvidedDeps);
- Set<String> missingProjectPackages = Sets.difference(projectPackages.referencedPackages(), definedAndExportedPackages).stream()
- .filter(pkg -> ! pkg.startsWith("java."))
- .collect(Collectors.toSet());
+ Set<String> missingProjectPackages = missingPackages(projectPackages, definedAndExportedPackages);
if (! missingProjectPackages.isEmpty()) {
- getLog().warn("Packages unavailable runtime are referenced from project classes (annotations can usually be ignored): "
- + missingProjectPackages);
+ getLog().warn("Packages unavailable runtime are referenced from project classes " +
+ "(annotations can usually be ignored): " + missingProjectPackages);
}
- Set<String> missingCompilePackages = Sets.difference(compileJarPackages.referencedPackages(), definedAndExportedPackages).stream()
- .filter(pkg -> ! pkg.startsWith("java."))
- .collect(Collectors.toSet());
-
+ Set<String> missingCompilePackages = missingPackages(compileJarPackages, definedAndExportedPackages);
if (! missingCompilePackages.isEmpty()) {
- getLog().info("Packages referenced from compile scoped jars, but not available runtime: "
- + missingCompilePackages);
+ getLog().info("Packages unavailable runtime are referenced from compile scoped jars " +
+ "(annotations can usually be ignored): " + missingCompilePackages);
}
}
+ private static Set<String> missingPackages(PackageTally projectPackages, Set<String> definedAndExportedPackages) {
+ return Sets.difference(projectPackages.referencedPackages(), definedAndExportedPackages).stream()
+ .filter(pkg -> !pkg.startsWith("java."))
+ .collect(Collectors.toSet());
+ }
+
private static void warnIfPackagesDefinedOverlapsGlobalPackages(Set<String> internalPackages, List<String> globalPackages)
throws MojoExecutionException {
Set<String> overlap = Sets.intersection(internalPackages, new HashSet<>(globalPackages));