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 02a8aea9e2d2e5fe735e9061d5089c7091512dff Author: Carsten Ziegeler <[email protected]> AuthorDate: Mon Sep 5 15:31:41 2011 +0000 SLING-2207 : Support different properties and bootstrap commands for standalone and webapp git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/maven/maven-launchpad-plugin@1165337 13f79535-47bb-0310-9956-ffa450edef68 --- .../projectsupport/AbstractBundleListMojo.java | 24 +++++ .../AbstractUsingBundleListMojo.java | 105 ++++++++++++++++----- .../AttachPartialBundleListMojo.java | 33 +++++++ .../maven/projectsupport/PreparePackageMojo.java | 4 +- 4 files changed, 143 insertions(+), 23 deletions(-) diff --git a/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java b/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java index e248d2b..912fa3d 100644 --- a/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java +++ b/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java @@ -66,6 +66,30 @@ public abstract class AbstractBundleListMojo extends AbstractMojo { */ protected File commonSlingBootstrap; + /** + * @parameter expression="${webappSlingProps}" + * default-value="src/main/sling/webapp.properties" + */ + protected File webappSlingProps; + + /** + * @parameter expression="${webappSlingBootstrap}" + * default-value="src/main/sling/webapp.bootstrap.txt" + */ + protected File webappSlingBootstrap; + + /** + * @parameter expression="${standaloneSlingProps}" + * default-value="src/main/sling/standalone.properties" + */ + protected File standaloneSlingProps; + + /** + * @parameter expression="${standaloneSlingBootstrap}" + * default-value="src/main/sling/standalone.bootstrap.txt" + */ + protected File standaloneSlingBootstrap; + protected File getConfigDirectory() { return this.configDirectory; } 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 f058a34..34270d5 100644 --- a/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java +++ b/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java @@ -177,8 +177,16 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo private Properties slingProperties; + private Properties slingWebappProperties; + + private Properties slingStandaloneProperties; + private String slingBootstrapCommand; + private String slingWebappBootstrapCommand; + + private String slingStandaloneBootstrapCommand; + /** * @parameter default-value="${project.build.directory}/tmpBundleListconfig" */ @@ -380,8 +388,12 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo zipUnarchiver.extract(); final File slingDir = new File(this.tmpOutputDir, "sling"); - this.readSlingProperties(new File(slingDir, AttachPartialBundleListMojo.SLING_COMMON_PROPS)); - this.readSlingBootstrap(new File(slingDir, AttachPartialBundleListMojo.SLING_COMMON_BOOTSTRAP)); + this.readSlingProperties(new File(slingDir, AttachPartialBundleListMojo.SLING_COMMON_PROPS), 0); + this.readSlingProperties(new File(slingDir, AttachPartialBundleListMojo.SLING_WEBAPP_PROPS), 1); + this.readSlingProperties(new File(slingDir, AttachPartialBundleListMojo.SLING_STANDALONE_PROPS), 2); + this.readSlingBootstrap(new File(slingDir, AttachPartialBundleListMojo.SLING_COMMON_BOOTSTRAP), 0); + this.readSlingBootstrap(new File(slingDir, AttachPartialBundleListMojo.SLING_WEBAPP_BOOTSTRAP), 1); + this.readSlingBootstrap(new File(slingDir, AttachPartialBundleListMojo.SLING_STANDALONE_BOOTSTRAP), 2); // and now configurations if ( this.overlayConfigDir == null ) { @@ -458,7 +470,15 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo } } - private void readSlingProperties(final File propsFile) throws MojoExecutionException { + private void copyProperties(final Properties source, final Properties dest) { + final Enumeration<Object> keys = source.keys(); + while ( keys.hasMoreElements() ) { + final Object key = keys.nextElement(); + dest.put(key, source.get(key)); + } + } + + private void readSlingProperties(final File propsFile, final int mode) throws MojoExecutionException { if (propsFile.exists()) { File tmp = null; try { @@ -466,13 +486,23 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo mavenFileFilter.copyFile(propsFile, tmp, true, project, null, true, System.getProperty("file.encoding"), mavenSession); final Properties loadedProps = PropertyUtils.loadPropertyFile(tmp, null); - if ( this.slingProperties == null ) { - this.slingProperties = loadedProps; + if ( mode == 0 ) { + if ( this.slingProperties == null ) { + this.slingProperties = loadedProps; + } else { + this.copyProperties(loadedProps, this.slingProperties); + } + } else if ( mode == 1 ) { + if ( this.slingWebappProperties == null ) { + this.slingWebappProperties = loadedProps; + } else { + this.copyProperties(loadedProps, this.slingWebappProperties); + } } else { - final Enumeration<Object> keys = loadedProps.keys(); - while ( keys.hasMoreElements() ) { - final Object key = keys.nextElement(); - this.slingProperties.put(key, loadedProps.get(key)); + if ( this.slingStandaloneProperties == null ) { + this.slingStandaloneProperties = loadedProps; + } else { + this.copyProperties(loadedProps, this.slingStandaloneProperties); } } } catch (IOException e) { @@ -487,8 +517,18 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo } } - protected Properties getSlingProperties() throws MojoExecutionException { - readSlingProperties(this.commonSlingProps); + protected Properties getSlingProperties(final boolean standalone) throws MojoExecutionException { + readSlingProperties(this.commonSlingProps, 0); + final Properties additionalProps = (standalone ? this.slingStandaloneProperties : this.slingWebappProperties); + if ( this.slingProperties == null) { + return additionalProps; + } + if ( additionalProps != null ) { + final Properties combinedProps = new Properties(); + this.copyProperties(this.slingProperties, combinedProps); + this.copyProperties(additionalProps, combinedProps); + return combinedProps; + } return this.slingProperties; } @@ -497,7 +537,7 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo * The filter is copied to a tmp location to apply filtering. * @throws MojoExecutionException */ - private void readSlingBootstrap(final File bootstrapFile) throws MojoExecutionException { + private void readSlingBootstrap(final File bootstrapFile, final int mode) throws MojoExecutionException { if (bootstrapFile.exists()) { File tmp = null; Reader reader = null; @@ -507,19 +547,34 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo System.getProperty("file.encoding"), mavenSession); reader = new FileReader(tmp); final StringBuilder sb = new StringBuilder(); - if ( this.slingBootstrapCommand != null ) { - sb.append(this.slingBootstrapCommand); + if ( mode == 0 ) { + if ( this.slingBootstrapCommand != null ) { + sb.append(this.slingBootstrapCommand); + } + } else if ( mode == 1 ) { + if ( this.slingWebappBootstrapCommand != null ) { + sb.append(this.slingWebappBootstrapCommand); + } + } else { + if ( this.slingStandaloneBootstrapCommand != null ) { + sb.append(this.slingStandaloneBootstrapCommand); + } } final char[] buffer = new char[2048]; int l; while ( (l = reader.read(buffer, 0, buffer.length) ) != -1 ) { sb.append(buffer, 0, l); } - - this.slingBootstrapCommand = sb.toString(); - } catch (IOException e) { + if ( mode == 0 ) { + this.slingBootstrapCommand = sb.toString(); + } else if ( mode == 1 ) { + this.slingWebappBootstrapCommand = sb.toString(); + } else { + this.slingStandaloneBootstrapCommand = sb.toString(); + } + } catch (final IOException e) { throw new MojoExecutionException("Unable to create filtered bootstrap file", e); - } catch (MavenFilteringException e) { + } catch (final MavenFilteringException e) { throw new MojoExecutionException("Unable to create filtered bootstrap file", e); } finally { if (tmp != null) { @@ -540,9 +595,17 @@ public abstract class AbstractUsingBundleListMojo extends AbstractBundleListMojo * @return The contents are <code>null</code> * @throws MojoExecutionException */ - protected String getSlingBootstrap() throws MojoExecutionException { - this.readSlingBootstrap(this.commonSlingBootstrap); - + protected String getSlingBootstrap(final boolean standalone) throws MojoExecutionException { + this.readSlingBootstrap(this.commonSlingBootstrap, 0); + final String addCmds = (standalone ? this.slingStandaloneBootstrapCommand : this.slingWebappBootstrapCommand); + if ( this.slingBootstrapCommand == null ) { + return addCmds; + } + if ( addCmds != null ) { + final StringBuilder builder = new StringBuilder(this.slingBootstrapCommand); + builder.append(addCmds); + return builder.toString(); + } return this.slingBootstrapCommand; } } diff --git a/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java b/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java index e602d1c..40f5732 100644 --- a/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java +++ b/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java @@ -42,6 +42,14 @@ public class AttachPartialBundleListMojo extends AbstractBundleListMojo { public static final String SLING_COMMON_BOOTSTRAP = "common.bootstrap.txt"; + public static final String SLING_WEBAPP_PROPS = "webapp.properties"; + + public static final String SLING_WEBAPP_BOOTSTRAP = "webapp.bootstrap.txt"; + + public static final String SLING_STANDALONE_PROPS = "standalone.properties"; + + public static final String SLING_STANDALONE_BOOTSTRAP = "standalone.bootstrap.txt"; + /** * @parameter default-value="${project.build.directory}/bundleListconfig" */ @@ -75,6 +83,7 @@ public class AttachPartialBundleListMojo extends AbstractBundleListMojo { private boolean checkFile(final File f) { return f != null && f.exists(); } + private void attachConfigurations() throws MojoExecutionException, IOException, ArchiverException { if ( this.ignoreBundleListConfig ) { this.getLog().debug("ignoreBundleListConfig is set to true, therefore not attaching configurations."); @@ -84,6 +93,10 @@ public class AttachPartialBundleListMojo extends AbstractBundleListMojo { boolean hasConfigs = this.checkFile(this.getConfigDirectory()); hasConfigs |= this.checkFile(this.commonSlingBootstrap); hasConfigs |= this.checkFile(this.commonSlingProps); + hasConfigs |= this.checkFile(this.webappSlingBootstrap); + hasConfigs |= this.checkFile(this.webappSlingProps); + hasConfigs |= this.checkFile(this.standaloneSlingBootstrap); + hasConfigs |= this.checkFile(this.standaloneSlingProps); if ( !hasConfigs ) { this.getLog().debug("No configurations to attach."); @@ -101,6 +114,26 @@ public class AttachPartialBundleListMojo extends AbstractBundleListMojo { slingDir.mkdirs(); FileUtils.copyFile(this.commonSlingProps, new File(slingDir, SLING_COMMON_PROPS)); } + if ( this.checkFile(this.webappSlingBootstrap) ) { + final File slingDir = new File(this.configOutputDir, "sling"); + slingDir.mkdirs(); + FileUtils.copyFile(this.webappSlingBootstrap, new File(slingDir, SLING_WEBAPP_BOOTSTRAP)); + } + if ( this.checkFile(this.webappSlingProps) ) { + final File slingDir = new File(this.configOutputDir, "sling"); + slingDir.mkdirs(); + FileUtils.copyFile(this.webappSlingProps, new File(slingDir, SLING_WEBAPP_PROPS)); + } + if ( this.checkFile(this.standaloneSlingBootstrap) ) { + final File slingDir = new File(this.configOutputDir, "sling"); + slingDir.mkdirs(); + FileUtils.copyFile(this.standaloneSlingBootstrap, new File(slingDir, SLING_STANDALONE_BOOTSTRAP)); + } + if ( this.checkFile(this.standaloneSlingProps) ) { + final File slingDir = new File(this.configOutputDir, "sling"); + slingDir.mkdirs(); + FileUtils.copyFile(this.standaloneSlingProps, new File(slingDir, SLING_STANDALONE_PROPS)); + } if ( this.checkFile(this.getConfigDirectory()) ) { final File configDir = new File(this.configOutputDir, "config"); configDir.mkdirs(); 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 7506118..abc2f03 100644 --- a/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java +++ b/src/main/java/org/apache/sling/maven/projectsupport/PreparePackageMojo.java @@ -222,8 +222,8 @@ public class PreparePackageMojo extends AbstractLaunchpadFrameworkMojo { + "." + artifact.getArtifactHandler().getExtension()); // check if custom sling.properties file or bootstrap command exists - final Properties additionalProps = this.getSlingProperties(); - final String bootstrapCmd = this.getSlingBootstrap(); + final Properties additionalProps = this.getSlingProperties(JAR.equals(this.packaging)); + final String bootstrapCmd = this.getSlingBootstrap(JAR.equals(this.packaging)); if ( additionalProps != null || bootstrapCmd != null ) { // unpack to a temp destination final File dest = new File(this.tempDirectory, "basejar"); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
