You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ju...@apache.org on 2011/11/04 21:46:12 UTC

svn commit: r1197759 - in /sling/trunk/maven/maven-launchpad-plugin: ./ src/main/java/org/apache/sling/maven/projectsupport/

Author: justin
Date: Fri Nov  4 20:46:12 2011
New Revision: 1197759

URL: http://svn.apache.org/viewvc?rev=1197759&view=rev
Log:
SLING-2265 - adding maven-dependency-plugin style option includeDepenencies

Added:
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/ConfigurationStartLevel.java
Modified:
    sling/trunk/maven/maven-launchpad-plugin/pom.xml
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachBundleListMojo.java
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CheckBundleListForSnapshotsMojo.java
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CreateKarafFeatureDescriptorMojo.java
    sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/OutputBundleListMojo.java

Modified: sling/trunk/maven/maven-launchpad-plugin/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/pom.xml?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/pom.xml (original)
+++ sling/trunk/maven/maven-launchpad-plugin/pom.xml Fri Nov  4 20:46:12 2011
@@ -108,7 +108,6 @@
             <artifactId>maven-archiver</artifactId>
             <version>2.0</version>
         </dependency>
-
         <dependency>
             <groupId>org.codehaus.plexus</groupId>
             <artifactId>plexus-archiver</artifactId>
@@ -124,6 +123,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <!-- using utility classes from this plugin -->
+        <dependency>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-dependency-plugin</artifactId>
+            <version>2.3</version>
+        </dependency>
         <dependency>
             <groupId>org.codehaus.plexus</groupId>
             <artifactId>plexus-utils</artifactId>

Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractBundleListMojo.java Fri Nov  4 20:46:12 2011
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -41,6 +42,7 @@ import org.apache.maven.plugin.MojoExecu
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 import org.apache.maven.settings.Settings;
+import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
 import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.Bundle;
 import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.BundleList;
 import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.StartLevel;
@@ -66,8 +68,13 @@ public abstract class AbstractBundleList
     protected File bundleListFile;
 
     /**
+     * @parameter
+     */
+    private ConfigurationStartLevel[] includeDependencies;
+
+    /**
      * The Maven project.
-     *
+     * 
      * @parameter expression="${project}"
      * @required
      * @readonly
@@ -195,7 +202,16 @@ public abstract class AbstractBundleList
     }
 
     @SuppressWarnings("unchecked")
-    protected void addDependencies(final BundleList bundleList) {
+    protected void addDependencies(final BundleList bundleList) throws MojoExecutionException {
+        if (includeDependencies != null) {
+            for (ConfigurationStartLevel startLevel : includeDependencies) {
+                Set<Artifact> artifacts = getArtifacts(startLevel);
+                for (Artifact artifact : artifacts) {
+                    bundleList.add(ArtifactDefinition.toBundle(artifact, startLevel.getLevel()));
+                }
+            }
+        }
+
         if (dependencyStartLevel >= 0) {
             final List<Dependency> dependencies = project.getDependencies();
             for (Dependency dependency : dependencies) {
@@ -206,6 +222,21 @@ public abstract class AbstractBundleList
         }
     }
 
+    @SuppressWarnings("unchecked")
+    private Set<Artifact> getArtifacts(ConfigurationStartLevel startLevel) throws MojoExecutionException {
+        // start with all artifacts.
+        Set<Artifact> artifacts = project.getArtifacts();
+
+        // perform filtering
+        try {
+            artifacts = startLevel.buildFilter(project).filter(artifacts);
+        } catch (ArtifactFilterException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
+        }
+        
+        return artifacts;
+    }
+
     protected void interpolateProperties(BundleList bundleList) throws MojoExecutionException {
         Interpolator interpolator = createInterpolator();
         for (final StartLevel sl : bundleList.getStartLevels()) {

Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachBundleListMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachBundleListMojo.java?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachBundleListMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachBundleListMojo.java Fri Nov  4 20:46:12 2011
@@ -29,6 +29,7 @@ import org.apache.sling.maven.projectsup
  *
  * @goal attach-bundle-list
  * @phase package
+ * @requiresDependencyResolution test
  * @description attach the bundle list as a project artifact
  */
 public class AttachBundleListMojo extends AbstractUsingBundleListMojo {

Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AttachPartialBundleListMojo.java Fri Nov  4 20:46:12 2011
@@ -34,6 +34,7 @@ import org.codehaus.plexus.util.xml.pull
  *
  * @goal attach-partial-bundle-list
  * @phase package
+ * @requiresDependencyResolution test
  * @description attach the partial bundle list as a project artifact
  */
 public class AttachPartialBundleListMojo extends AbstractBundleListMojo {

Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CheckBundleListForSnapshotsMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CheckBundleListForSnapshotsMojo.java?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CheckBundleListForSnapshotsMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CheckBundleListForSnapshotsMojo.java Fri Nov  4 20:46:12 2011
@@ -30,6 +30,7 @@ import org.apache.sling.maven.projectsup
  * to SNAPSHOT versions.
  *
  * @goal check-bundle-list-for-snapshots
+ * @requiresDependencyResolution test
  *
  */
 public class CheckBundleListForSnapshotsMojo extends AbstractUsingBundleListMojo {

Added: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/ConfigurationStartLevel.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/ConfigurationStartLevel.java?rev=1197759&view=auto
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/ConfigurationStartLevel.java (added)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/ConfigurationStartLevel.java Fri Nov  4 20:46:12 2011
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.apache.sling.maven.projectsupport;
+
+import org.apache.maven.plugin.dependency.utils.DependencyUtil;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.artifact.filter.collection.ArtifactIdFilter;
+import org.apache.maven.shared.artifact.filter.collection.ClassifierFilter;
+import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts;
+import org.apache.maven.shared.artifact.filter.collection.GroupIdFilter;
+import org.apache.maven.shared.artifact.filter.collection.ProjectTransitivityFilter;
+import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
+import org.apache.maven.shared.artifact.filter.collection.TypeFilter;
+
+public class ConfigurationStartLevel {
+    
+    private int level;
+
+    private String includeTypes;
+
+    private String excludeTypes;
+
+    private String includeScope;
+
+    private String excludeScope;
+
+    private String includeClassifiers;
+
+    private String excludeClassifiers;
+
+    private String excludeArtifactIds;
+
+    private String includeArtifactIds;
+
+    private String excludeGroupIds;
+
+    private String includeGroupIds;
+
+    public int getLevel() {
+        return level;
+    }
+
+    public void setLevel(int level) {
+        this.level = level;
+    }
+
+    public String getIncludeTypes() {
+        return includeTypes;
+    }
+
+    public void setIncludeTypes(String includeTypes) {
+        this.includeTypes = includeTypes;
+    }
+
+    public String getExcludeTypes() {
+        return excludeTypes;
+    }
+
+    public void setExcludeTypes(String excludeTypes) {
+        this.excludeTypes = excludeTypes;
+    }
+
+    public String getIncludeScope() {
+        return includeScope;
+    }
+
+    public void setIncludeScope(String includeScope) {
+        this.includeScope = includeScope;
+    }
+
+    public String getExcludeScope() {
+        return excludeScope;
+    }
+
+    public void setExcludeScope(String excludeScope) {
+        this.excludeScope = excludeScope;
+    }
+
+    public String getIncludeClassifiers() {
+        return includeClassifiers;
+    }
+
+    public void setIncludeClassifiers(String includeClassifiers) {
+        this.includeClassifiers = includeClassifiers;
+    }
+
+    public String getExcludeClassifiers() {
+        return excludeClassifiers;
+    }
+
+    public void setExcludeClassifiers(String excludeClassifiers) {
+        this.excludeClassifiers = excludeClassifiers;
+    }
+
+    public String getExcludeArtifactIds() {
+        return excludeArtifactIds;
+    }
+
+    public void setExcludeArtifactIds(String excludeArtifactIds) {
+        this.excludeArtifactIds = excludeArtifactIds;
+    }
+
+    public String getIncludeArtifactIds() {
+        return includeArtifactIds;
+    }
+
+    public void setIncludeArtifactIds(String includeArtifactIds) {
+        this.includeArtifactIds = includeArtifactIds;
+    }
+
+    public String getExcludeGroupIds() {
+        return excludeGroupIds;
+    }
+
+    public void setExcludeGroupIds(String excludeGroupIds) {
+        this.excludeGroupIds = excludeGroupIds;
+    }
+
+    public String getIncludeGroupIds() {
+        return includeGroupIds;
+    }
+
+    public void setIncludeGroupIds(String includeGroupIds) {
+        this.includeGroupIds = includeGroupIds;
+    }
+
+    public FilterArtifacts buildFilter(MavenProject project) {
+        // add filters in well known order, least specific to most specific
+        FilterArtifacts filter = new FilterArtifacts();
+
+        filter.addFilter(new ProjectTransitivityFilter(project.getDependencyArtifacts(), true));
+
+        filter.addFilter(new ScopeFilter(DependencyUtil.cleanToBeTokenizedString(this.includeScope), DependencyUtil
+                .cleanToBeTokenizedString(this.excludeScope)));
+
+        filter.addFilter(new TypeFilter(DependencyUtil.cleanToBeTokenizedString(this.includeTypes), DependencyUtil
+                .cleanToBeTokenizedString(this.excludeTypes)));
+
+        filter.addFilter(new ClassifierFilter(DependencyUtil.cleanToBeTokenizedString(this.includeClassifiers),
+                DependencyUtil.cleanToBeTokenizedString(this.excludeClassifiers)));
+
+        filter.addFilter(new GroupIdFilter(DependencyUtil.cleanToBeTokenizedString(this.includeGroupIds),
+                DependencyUtil.cleanToBeTokenizedString(this.excludeGroupIds)));
+
+        filter.addFilter(new ArtifactIdFilter(DependencyUtil.cleanToBeTokenizedString(this.includeArtifactIds),
+                DependencyUtil.cleanToBeTokenizedString(this.excludeArtifactIds)));
+        return filter;
+    }
+    
+    
+
+}

Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CreateKarafFeatureDescriptorMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CreateKarafFeatureDescriptorMojo.java?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CreateKarafFeatureDescriptorMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/CreateKarafFeatureDescriptorMojo.java Fri Nov  4 20:46:12 2011
@@ -36,6 +36,7 @@ import org.jdom.output.XMLOutputter;
  * @goal create-karaf-descriptor
  * @phase package
  * @description create a karaf feature descriptor
+ * @requiresDependencyResolution test
  */
 public class CreateKarafFeatureDescriptorMojo extends AbstractUsingBundleListMojo {
 

Modified: sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/OutputBundleListMojo.java
URL: http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/OutputBundleListMojo.java?rev=1197759&r1=1197758&r2=1197759&view=diff
==============================================================================
--- sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/OutputBundleListMojo.java (original)
+++ sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/OutputBundleListMojo.java Fri Nov  4 20:46:12 2011
@@ -27,6 +27,7 @@ import org.apache.sling.maven.projectsup
  * Output the bundle list back to the console.
  * 
  * @goal output-bundle-list
+ * @requiresDependencyResolution test
  * 
  */
 public class OutputBundleListMojo extends AbstractUsingBundleListMojo {