This is an automated email from the ASF dual-hosted git repository. kwin pushed a commit to branch feature/use-attached-artifacts in repository https://gitbox.apache.org/repos/asf/sling-maven-plugin.git
commit 14e2c8c312ddaaed11d2d9e2b8cd34e28457a238 Author: Konrad Windszus <[email protected]> AuthorDate: Thu Aug 11 16:19:06 2022 +0200 SLING-11524 Always retrieve bundle file from project artifact's --- .../bundlesupport/AbstractBundleRequestMojo.java | 19 +++--------- .../maven/bundlesupport/BundleInstallMojo.java | 34 +++++++++++++++------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleRequestMojo.java b/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleRequestMojo.java index d92083f..8203640 100644 --- a/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleRequestMojo.java +++ b/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/AbstractBundleRequestMojo.java @@ -41,6 +41,7 @@ import org.apache.hc.core5.util.Timeout; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugins.annotations.Parameter; +import org.osgi.framework.Constants; abstract class AbstractBundleRequestMojo extends AbstractMojo { @@ -117,9 +118,7 @@ abstract class AbstractBundleRequestMojo extends AbstractMojo { return null; } - JarFile jaf = null; - try { - jaf = new JarFile(jarFile); + try (JarFile jaf = new JarFile(jarFile)) { Manifest manif = jaf.getManifest(); if (manif == null) { getLog().debug( @@ -127,8 +126,7 @@ abstract class AbstractBundleRequestMojo extends AbstractMojo { return null; } - String symbName = manif.getMainAttributes().getValue( - "Bundle-SymbolicName"); + String symbName = manif.getMainAttributes().getValue(Constants.BUNDLE_SYMBOLICNAME); if (symbName == null) { getLog().debug( "getBundleSymbolicName: No Bundle-SymbolicName in " @@ -140,16 +138,7 @@ abstract class AbstractBundleRequestMojo extends AbstractMojo { } catch (IOException ioe) { getLog().warn("getBundleSymbolicName: Problem checking " + jarFile, ioe); - } finally { - if (jaf != null) { - try { - jaf.close(); - } catch (IOException ignore) { - // don't care - } - } - } - + } // fall back to not being a bundle return null; } diff --git a/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/BundleInstallMojo.java b/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/BundleInstallMojo.java index 6ecc098..fbd636e 100644 --- a/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/BundleInstallMojo.java +++ b/sling-maven-plugin/src/main/java/org/apache/sling/maven/bundlesupport/BundleInstallMojo.java @@ -19,13 +19,15 @@ package org.apache.sling.maven.bundlesupport; import java.io.File; +import org.apache.maven.artifact.Artifact; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; /** - * Install a local OSGi bundle file to a running Sling instance. + * Install the project's artifact to a running Sling instance (in case it is an OSGi bundle). + * It uses the first valid OSGi bundle file for deployment from the primary artifact and all secondary ones. * For details refer to <a href="bundle-installation.html">Bundle Installation</a>. */ @Mojo(name = "install", defaultPhase = LifecyclePhase.INSTALL) @@ -37,12 +39,6 @@ public class BundleInstallMojo extends AbstractBundleInstallMojo { */ @Parameter(property = "sling.install.skip", defaultValue = "false", required = true) private boolean skip; - - /** - * The path of the bundle file to install. - */ - @Parameter(property = "sling.file", defaultValue = "${project.build.directory}/${project.build.finalName}.jar", required = true) - private File bundleFileName; @Override public void execute() throws MojoExecutionException { @@ -51,12 +47,30 @@ public class BundleInstallMojo extends AbstractBundleInstallMojo { getLog().debug("Skipping bundle installation as instructed"); return; } - super.execute(); } - + @Override protected File getBundleFileName() { - return bundleFileName; + File file = project.getArtifact().getFile(); + if (isBundleFile(file)) { + return file; + } else { + getLog().debug("No bundle found in primary artifact " + file + ", checking secondary ones..."); + for (Artifact artifact : project.getAttachedArtifacts()) { + if (isBundleFile(artifact.getFile())) { + return file; + } + getLog().debug("No bundle found in secondary artifact " + file); + } + } + return null; + } + + private boolean isBundleFile(File file) { + if (file == null) { + return false; + } + return getBundleSymbolicName(file) != null; } } \ No newline at end of file
