You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/07/28 14:11:16 UTC

svn commit: r1693076 - in /sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart: AbstractSlingStartMojo.java DependencyLifecycleParticipant.java

Author: cziegeler
Date: Tue Jul 28 12:11:15 2015
New Revision: 1693076

URL: http://svn.apache.org/r1693076
Log:
SLING-4912 : Support inlining the model in the pom

Modified:
    sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
    sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java

Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java?rev=1693076&r1=1693075&r2=1693076&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java Tue Jul 28 12:11:15 2015
@@ -31,9 +31,20 @@ import org.apache.sling.provisioning.mod
  */
 public abstract class AbstractSlingStartMojo extends AbstractMojo {
 
+    /**
+     * The model directory
+     * This parameter is evaluated in the DependencyLifecycleParticipant
+     */
     @Parameter(defaultValue="${basedir}/src/main/provisioning")
     private File modelDirectory;
 
+    /**
+     * Inlined model, supported since version 1.3.
+     * This parameter is evaluated in the DependencyLifecycleParticipant
+     */
+    @Parameter
+    private String model;
+
     @Parameter(property = "project", readonly = true, required = true)
     protected MavenProject project;
 

Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java?rev=1693076&r1=1693075&r2=1693076&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java Tue Jul 28 12:11:15 2015
@@ -19,6 +19,8 @@ package org.apache.sling.maven.slingstar
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -140,12 +142,14 @@ public class DependencyLifecycleParticip
         final String directory = nodeValue(info.plugin,
                 "modelDirectory",
                 new File(info.project.getBasedir(), "src/main/provisioning").getAbsolutePath());
+        final String inlinedModel = nodeValue(info.plugin,
+                "model", null);
         try {
-            info.localModel = readLocalModel(info.project, new File(directory), env.logger);
+            info.localModel = readLocalModel(info.project, inlinedModel, new File(directory), env.logger);
         } catch ( final IOException ioe) {
             throw new MavenExecutionException(ioe.getMessage(), ioe);
         }
-        
+
         // prepare resolver options
         ResolverOptions resolverOptions = new ResolverOptions();
         if (nodeBooleanValue(info.plugin, "usePomVariables", false)) {
@@ -386,6 +390,7 @@ public class DependencyLifecycleParticip
      */
     private static Model readLocalModel(
             final MavenProject project,
+            final String inlinedModel,
             final File modelDirectory,
             final Logger logger)
     throws MavenExecutionException, IOException {
@@ -400,10 +405,28 @@ public class DependencyLifecycleParticip
             }
             Collections.sort(candidates);
         }
-        if ( candidates.size() == 0 ) {
-            throw new MavenExecutionException("No model files found in " + modelDirectory, (File)null);
+        if ( candidates.size() == 0 && (inlinedModel == null || inlinedModel.trim().length() == 0) ) {
+            throw new MavenExecutionException("No model files found in " + modelDirectory + ", and no model inlined in POM.", (File)null);
         }
         final Model result = new Model();
+        if ( inlinedModel != null ) {
+            logger.debug("Reading inlined model from project " + project.getId());
+            try {
+                final Reader reader = new StringReader(inlinedModel);
+                try {
+                    final Model current = ModelReader.read(reader, "pom");
+                    final Map<Traceable, String> errors = ModelUtility.validate(current);
+                    if (errors != null ) {
+                        throw new MavenExecutionException("Invalid inlined model : " + errors, (File)null);
+                    }
+                    ModelUtility.merge(result, current, false);
+                } finally {
+                    IOUtils.closeQuietly(reader);
+                }
+            } catch ( final IOException io) {
+                throw new MavenExecutionException("Unable to read inlined model", io);
+            }
+        }
         for(final String name : candidates) {
             logger.debug("Reading model " + name + " in project " + project.getId());
             try {