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 10:26:21 UTC

[sling-slingstart-maven-plugin] 10/18: Get dependent projects from build if build in the same build

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag slingstart-maven-plugin-1.1.0
in repository https://gitbox.apache.org/repos/asf/sling-slingstart-maven-plugin.git

commit 350917d1766fcc461cda5fe85b8dd216ccae006e
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Apr 10 11:56:11 2015 +0000

    Get dependent projects from build if build in the same build
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/maven/slingstart-maven-plugin@1672622 13f79535-47bb-0310-9956-ffa450edef68
---
 .../slingstart/DependencyLifecycleParticipant.java | 29 +++++++++-
 .../apache/sling/maven/slingstart/ModelUtils.java  | 66 +++++++++++-----------
 .../maven/slingstart/PrepareSlingStartMojo.java    | 15 +----
 3 files changed, 63 insertions(+), 47 deletions(-)

diff --git a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
index 78804be..05ba821 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
@@ -25,8 +25,12 @@ import java.util.Map;
 import org.apache.maven.AbstractMavenLifecycleParticipant;
 import org.apache.maven.MavenExecutionException;
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Plugin;
@@ -106,7 +110,7 @@ public class DependencyLifecycleParticipant extends AbstractMavenLifecyclePartic
                     allDependencies.add(key + ":" + d.getClassifier() + ":" + d.getType());
                 } else {
                     // "external" dependency, we can already resolve it
-                    final File modelFile = ModelUtils.getSlingstartArtifact(artifactHandlerManager, resolver, project, session, d);
+                    final File modelFile = getSlingstartArtifact(artifactHandlerManager, resolver, project, session, d);
                     resolvedModelDependencies.add(modelFile);
                     allDependencies.add(modelFile);
                 }
@@ -187,4 +191,27 @@ public class DependencyLifecycleParticipant extends AbstractMavenLifecyclePartic
             return defaultValue;
         }
     }
+
+    private static File getSlingstartArtifact(final ArtifactHandlerManager artifactHandlerManager,
+            final ArtifactResolver resolver,
+            final MavenProject project,
+            final MavenSession session,
+            final Dependency d)
+    throws MavenExecutionException {
+        final Artifact prjArtifact = new DefaultArtifact(d.getGroupId(),
+                d.getArtifactId(),
+                VersionRange.createFromVersion(d.getVersion()),
+                Artifact.SCOPE_PROVIDED,
+                d.getType(),
+                d.getClassifier(),
+                artifactHandlerManager.getArtifactHandler(d.getType()));
+        try {
+            resolver.resolve(prjArtifact, project.getRemoteArtifactRepositories(), session.getLocalRepository());
+        } catch (final ArtifactResolutionException e) {
+            throw new MavenExecutionException("Unable to get artifact for " + d, e);
+        } catch (final ArtifactNotFoundException e) {
+            throw new MavenExecutionException("Unable to get artifact for " + d, e);
+        }
+        return prjArtifact.getFile();
+    }
 }
diff --git a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
index f14b610..439b3cf 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/ModelUtils.java
@@ -28,7 +28,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.maven.MavenExecutionException;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
@@ -202,29 +201,6 @@ public abstract class ModelUtils {
         return result;
     }
 
-    public static File getSlingstartArtifact(final ArtifactHandlerManager artifactHandlerManager,
-            final ArtifactResolver resolver,
-            final MavenProject project,
-            final MavenSession session,
-            final Dependency d)
-    throws MavenExecutionException {
-        final Artifact prjArtifact = new DefaultArtifact(d.getGroupId(),
-                d.getArtifactId(),
-                VersionRange.createFromVersion(d.getVersion()),
-                Artifact.SCOPE_PROVIDED,
-                d.getType(),
-                d.getClassifier(),
-                artifactHandlerManager.getArtifactHandler(d.getType()));
-        try {
-            resolver.resolve(prjArtifact, project.getRemoteArtifactRepositories(), session.getLocalRepository());
-        } catch (final ArtifactResolutionException e) {
-            throw new MavenExecutionException("Unable to get artifact for " + d, e);
-        } catch (final ArtifactNotFoundException e) {
-            throw new MavenExecutionException("Unable to get artifact for " + d, e);
-        }
-        return prjArtifact.getFile();
-    }
-
     /**
      * Get a resolved Artifact from the coordinates provided
      *
@@ -287,9 +263,7 @@ public abstract class ModelUtils {
     }
 
     public static void prepareModel(final MavenProject project,
-            final MavenSession session,
-            final ArtifactHandlerManager artifactHandlerManager,
-            final ArtifactResolver resolver)
+            final MavenSession session)
     throws MojoExecutionException {
         final String contents = (String)project.getContextValue(RAW_MODEL_TXT);
         final Model localModel;
@@ -314,11 +288,7 @@ public abstract class ModelUtils {
                 if ( info[4] != null && info[4].length() > 0 ) {
                     dep.setType(info[4]);
                 }
-                try {
-                    modelDependencies.add(getSlingstartArtifact(artifactHandlerManager, resolver, project, session, dep));
-                } catch ( final MavenExecutionException mee) {
-                    throw new MojoExecutionException(mee.getMessage(), mee.getCause());
-                }
+                modelDependencies.add(getSlingstartArtifact(project, session, dep));
             } else {
                 modelDependencies.add((File)o);
             }
@@ -364,6 +334,38 @@ public abstract class ModelUtils {
         project.setContextValue(EFFECTIVE_MODEL, effectiveModel);
     }
 
+    private static File getSlingstartArtifact(final MavenProject project,
+            final MavenSession session,
+            final Dependency dep)
+    throws MojoExecutionException {
+        for (final MavenProject p : session.getProjects()) {
+            // we only need to find the group id / artifact id, version is correct anyway
+            if ( p.getGroupId().equals(dep.getGroupId())
+                 && p.getArtifactId().equals(dep.getArtifactId()) ) {
+
+                for(final Artifact a : p.getAttachedArtifacts()) {
+                    if ( equals(a.getType(), dep.getType() ) && equals(a.getClassifier(), dep.getClassifier())) {
+                        if ( a.getFile() != null ) {
+                            return a.getFile();
+                        }
+                    }
+                }
+                break;
+            }
+        }
+        throw new MojoExecutionException("Unable to find dependency build artifact " + dep);
+    }
+
+    private final static boolean equals(final String a, final String b) {
+        if ( a == null && b == null ) {
+            return true;
+        }
+        if ( a == null ) {
+            return false;
+        }
+        return a.equals(b);
+    }
+
     /**
      * Get the effective model from the project
      * @param project The maven projet
diff --git a/src/main/java/org/apache/sling/maven/slingstart/PrepareSlingStartMojo.java b/src/main/java/org/apache/sling/maven/slingstart/PrepareSlingStartMojo.java
index fd61c38..d7a1184 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/PrepareSlingStartMojo.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/PrepareSlingStartMojo.java
@@ -17,12 +17,9 @@
 package org.apache.sling.maven.slingstart;
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.ResolutionScope;
@@ -39,19 +36,9 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
     )
 public class PrepareSlingStartMojo extends AbstractSlingStartMojo {
 
-    @Component
-    private ArtifactHandlerManager artifactHandlerManager;
-
-    /**
-     * Used to look up Artifacts in the remote repository.
-     *
-     */
-    @Component
-    private ArtifactResolver resolver;
-
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
-        ModelUtils.prepareModel(this.project, this.mavenSession, this.artifactHandlerManager, this.resolver);
+        ModelUtils.prepareModel(this.project, this.mavenSession);
 
         if ( project.getPackaging().equals(BuildConstants.PACKAGING_SLINGSTART ) ) {
             // add dependencies for base artifact

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.