You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:15:52 UTC
[sling-maven-launchpad-plugin] 15/34: SLING-2134 : Provide a way to
add additional properties to sling.properties
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag maven-launchpad-plugin-2.1.0
in repository https://gitbox.apache.org/repos/asf/sling-maven-launchpad-plugin.git
commit d72004a32a36bf5c85585e1586d92a33bcb631ba
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Mon Jul 11 12:56:45 2011 +0000
SLING-2134 : Provide a way to add additional properties to sling.properties
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/maven/maven-launchpad-plugin@1145156 13f79535-47bb-0310-9956-ffa450edef68
---
.../AbstractUsingBundleListMojo.java | 17 ++-
.../maven/projectsupport/PreparePackageMojo.java | 135 ++++++++++++++++++---
2 files changed, 134 insertions(+), 18 deletions(-)
diff --git a/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java b/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
index 5420b42..ec00009 100644
--- a/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
+++ b/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
@@ -224,7 +224,7 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo
} catch (ArtifactMetadataRetrievalException e) {
throw new MojoExecutionException("Unable to find version for artifact", e);
}
-
+
}
try {
@@ -309,7 +309,7 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo
bundleList.remove(def.toBundle(), false);
}
}
-
+
Set<Artifact> dependencies = project.getDependencyArtifacts();
for (Artifact artifact : dependencies) {
if (PARTIAL.equals(artifact.getType())) {
@@ -319,8 +319,8 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo
bundleList.merge(readBundleList(artifact.getFile()));
}
}
-
-
+
+
initBundleList(bundleList);
rewriteBundleList(bundleList);
@@ -371,4 +371,13 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo
}
}
+ protected File getSlingProperties() {
+ if ( this.configDirectory != null && this.configDirectory.exists() && this.configDirectory.isDirectory() ) {
+ final File slingProps = new File(this.configDirectory, "sling.properties");
+ if ( slingProps.exists() && slingProps.isFile() ) {
+ return slingProps;
+ }
+ }
+ return null;
+ }
}
diff --git a/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java b/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
index 9f445f3..f0788bb 100644
--- a/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
+++ b/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java
@@ -17,7 +17,10 @@
package org.apache.sling.maven.projectsupport;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.Enumeration;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
@@ -26,6 +29,7 @@ import org.apache.maven.plugin.MojoFailureException;
import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.BundleList;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.UnArchiver;
+import org.codehaus.plexus.archiver.jar.JarArchiver;
import org.codehaus.plexus.archiver.manager.ArchiverManager;
import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
import org.codehaus.plexus.util.FileUtils;
@@ -81,13 +85,28 @@ public class PreparePackageMojo extends AbstractLaunchpadFrameworkMojo {
private File buildOutputDirectory;
/**
+ * The temp directory (i.e. target/maven-launchpad-plugintmp).
+ *
+ * @parameter expression="${project.build.directory}/maven-launchpad-plugintmp"
+ * @readonly
+ */
+ private File tempDirectory;
+
+ /**
* To look up Archiver/UnArchiver implementations
*
* @component
*/
private ArchiverManager archiverManager;
- public void executeWithArtifacts() throws MojoExecutionException, MojoFailureException {
+ /**
+ * The Jar archiver.
+ *
+ * @component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
+ */
+ private JarArchiver jarArchiver;
+
+ public void executeWithArtifacts() throws MojoExecutionException, MojoFailureException {
copyBaseArtifact();
copyBundles(getBundleList(), getOutputDirectory());
copyConfigurationFiles();
@@ -131,20 +150,91 @@ public class PreparePackageMojo extends AbstractLaunchpadFrameworkMojo {
File destinationFile = new File(destinationDir, artifact
.getArtifactId()
+ "." + artifact.getArtifactHandler().getExtension());
- if (shouldCopy(artifact.getFile(), destinationFile)) {
- try {
- getLog().info(
- String.format("Copying base artifact from %s to %s.",
- artifact.getFile(), destinationFile));
- FileUtils.copyFile(artifact.getFile(), destinationFile);
- } catch (IOException e) {
- throw new MojoExecutionException(
- "Unable to copy base artifact.", e);
- }
+
+ // check if custom sling.properties file exists
+ final File slingProps = this.getSlingProperties();
+ if ( slingProps != null ) {
+ // unpack to a temp destination
+ final File dest = new File(this.tempDirectory, "basejar");
+ try {
+ unpack(artifact.getFile(), dest);
+ final File origSlingProps = new File(dest, "sling.properties");
+ if ( !origSlingProps.exists() ) {
+ throw new MojoExecutionException("sling.properties not found at " + origSlingProps);
+ }
+
+ // read original properties
+ final Properties orig = new Properties();
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(origSlingProps);
+ orig.load(fis);
+ } catch (final IOException ioe) {
+ throw new MojoExecutionException("Unable to read " + origSlingProps, ioe);
+ } finally {
+ if ( fis != null ) {
+ try { fis.close(); } catch (final IOException ignore) {}
+ }
+ }
+
+ // read additional properties
+ final Properties addProps = new Properties();
+ try {
+ fis = new FileInputStream(slingProps);
+ addProps.load(fis);
+ } catch (final IOException ioe) {
+ throw new MojoExecutionException("Unable to read " + slingProps, ioe);
+ } finally {
+ if ( fis != null ) {
+ try { fis.close(); } catch (final IOException ignore) {}
+ }
+ }
+
+ // patch
+ final Enumeration<Object> keys = addProps.keys();
+ if ( keys.hasMoreElements() ) {
+ getLog().info("Patching sling.properties");
+ }
+ while ( keys.hasMoreElements() ) {
+ final Object key = keys.nextElement();
+ orig.put(key, addProps.get(key));
+ }
+
+ /// and save
+ FileOutputStream fos = null;
+ try {
+ fos = new FileOutputStream(origSlingProps);
+ orig.store(fos, null);
+ } catch (final IOException ioe) {
+ throw new MojoExecutionException("Unable to save " + origSlingProps, ioe);
+ } finally {
+ if ( fis != null ) {
+ try { fis.close(); } catch (final IOException ignore) {}
+ }
+ }
+
+ // and repack again
+ pack(dest, destinationFile);
+ } finally {
+ this.tempDirectory.delete();
+ }
} else {
- getLog().debug(
- String.format("Skipping copy of base artifact from %s.",
- artifact.getFile()));
+ // we can just copy
+ if (shouldCopy(artifact.getFile(), destinationFile)) {
+ try {
+ getLog().info(
+ String.format("Copying base artifact from %s to %s.",
+ artifact.getFile(), destinationFile));
+ FileUtils.copyFile(artifact.getFile(), destinationFile);
+ } catch (IOException e) {
+ throw new MojoExecutionException(
+ "Unable to copy base artifact.", e);
+ }
+ } else {
+ getLog().debug(
+ String.format("Skipping copy of base artifact from %s.",
+ artifact.getFile()));
+ }
}
}
@@ -212,4 +302,21 @@ public class PreparePackageMojo extends AbstractLaunchpadFrameworkMojo {
throw new MojoExecutionException("Unable to unpack " + source.getPath(), e);
}
}
+
+ private void pack(File sourceDir, File destination)
+ throws MojoExecutionException {
+ getLog().info("Packing " + sourceDir.getPath() + " to\n " + destination.getPath());
+ try {
+ destination.getParentFile().mkdirs();
+
+ jarArchiver.setDestFile(destination);
+ jarArchiver.addDirectory(sourceDir);
+ jarArchiver.setManifest(new File(sourceDir, "META-INF/MANIFEST.MF".replace('/', File.separatorChar)));
+ jarArchiver.createArchive();
+ } catch (IOException e) {
+ throw new MojoExecutionException("Unable to pack " + sourceDir.getPath(), e);
+ } catch (ArchiverException e) {
+ throw new MojoExecutionException("Unable to pack " + sourceDir.getPath(), e);
+ }
+ }
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.