You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2006/10/08 23:16:05 UTC

svn commit: r454214 - in /geronimo/genesis/trunk/plugins: plugin-support/src/main/java/org/apache/geronimo/genesis/ tools-maven-plugin/ tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/

Author: jdillon
Date: Sun Oct  8 14:16:04 2006
New Revision: 454214

URL: http://svn.apache.org/viewvc?view=rev&rev=454214
Log:
Improved error message for MojoSupport hooks
Adding tools:show-dependencies goal, which is a helper to render a tree of the projects dependencies
Add some support for dependency listing lifted from the maven-project-info-plugin

Added:
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java   (with props)
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java   (with props)
    geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java   (with props)
Modified:
    geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/MojoSupport.java
    geronimo/genesis/trunk/plugins/tools-maven-plugin/pom.xml

Added: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java?view=auto&rev=454214
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java (added)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java Sun Oct  8 14:16:04 2006
@@ -0,0 +1,167 @@
+/*
+ * 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.geronimo.genesis;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.ArtifactUtils;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingException;
+
+//
+// NOTE: Lifetd from the maven-project-info-plugin
+//
+
+/**
+ * ???
+ *
+ * @version $Rev$ $Date$
+ */
+public class Dependencies
+{
+    private List projectDependencies;
+
+    private DependencyResolutionListener resolvedDependencies;
+
+    public Dependencies(MavenProject project, DependencyResolutionListener listener) {
+        this.projectDependencies = listener.getRootNode().getChildren();
+        this.resolvedDependencies = listener;
+
+        //
+        // Workaround to ensure proper File objects in the Artifacts from the DependencyResolutionListener
+        //
+        Map projectMap = new HashMap();
+        Iterator it = project.getArtifacts().iterator();
+        while (it.hasNext()) {
+            Artifact artifact = (Artifact) it.next();
+            projectMap.put(ArtifactUtils.versionlessKey(artifact), artifact);
+        }
+
+        mapArtifactFiles(listener.getRootNode(), projectMap);
+    }
+
+    public static Map getManagedVersionMap(MavenProject project, ArtifactFactory factory) throws ProjectBuildingException {
+        DependencyManagement dependencyManagement = project.getDependencyManagement();
+        Map managedVersionMap;
+
+        if (dependencyManagement != null && dependencyManagement.getDependencies() != null) {
+            managedVersionMap = new HashMap();
+            for (Iterator i = dependencyManagement.getDependencies().iterator(); i.hasNext();) {
+                Dependency d = (Dependency) i.next();
+
+                try {
+                    VersionRange versionRange = VersionRange.createFromVersionSpec(d.getVersion());
+                    Artifact artifact = factory.createDependencyArtifact(
+                            d.getGroupId(),
+                            d.getArtifactId(),
+                            versionRange,
+                            d.getType(),
+                            d.getClassifier(),
+                            d.getScope());
+                    managedVersionMap.put(d.getManagementKey(), artifact);
+                }
+                catch (InvalidVersionSpecificationException e) {
+                    throw new ProjectBuildingException(project.getId(),
+                            "Unable to parse version '" + d.getVersion() +
+                            "' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), e);
+                }
+            }
+        }
+        else {
+            managedVersionMap = Collections.EMPTY_MAP;
+        }
+
+        return managedVersionMap;
+    }
+
+    private void mapArtifactFiles(DependencyResolutionListener.Node node, Map projectMap) {
+        List childs = node.getChildren();
+        if ((childs == null) || childs.isEmpty()) {
+            return;
+        }
+
+        Iterator it = childs.iterator();
+        while (it.hasNext()) {
+            DependencyResolutionListener.Node anode = (DependencyResolutionListener.Node) it.next();
+            String key = ArtifactUtils.versionlessKey(anode.getArtifact());
+            Artifact projartifact = (Artifact) projectMap.get(key);
+            if (projartifact != null) {
+                anode.getArtifact().setFile(projartifact.getFile());
+            }
+
+            mapArtifactFiles(anode, projectMap);
+        }
+    }
+
+    public boolean hasDependencies() {
+        return (projectDependencies != null) && (!this.projectDependencies.isEmpty());
+    }
+
+    public List getProjectDependencies() {
+        return new ArrayList(projectDependencies);
+    }
+
+    public List getTransitiveDependencies() {
+        List deps = new ArrayList(resolvedDependencies.getArtifacts());
+        deps.removeAll(projectDependencies);
+        return deps;
+    }
+
+    public List getAllDependencies() {
+        List deps = new ArrayList();
+
+        for (Iterator it = resolvedDependencies.getArtifacts().iterator(); it.hasNext();) {
+            DependencyResolutionListener.Node node = (DependencyResolutionListener.Node) it.next();
+            Artifact artifact = node.getArtifact();
+            deps.add(artifact);
+        }
+        return deps;
+    }
+
+    public Map getDependenciesByScope() {
+        Map dependenciesByScope = new HashMap();
+        for (Iterator i = getAllDependencies().iterator(); i.hasNext();) {
+            Artifact artifact = (Artifact) i.next();
+
+            List multiValue = (List) dependenciesByScope.get(artifact.getScope());
+            if (multiValue == null) {
+                multiValue = new ArrayList();
+            }
+            multiValue.add(artifact);
+            dependenciesByScope.put(artifact.getScope(), multiValue);
+        }
+        return dependenciesByScope;
+    }
+
+    public DependencyResolutionListener.Node getResolvedRoot() {
+        return resolvedDependencies.getRootNode();
+    }
+}
\ No newline at end of file

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/Dependencies.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java?view=auto&rev=454214
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java (added)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java Sun Oct  8 14:16:04 2006
@@ -0,0 +1,172 @@
+/*
+ * 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.geronimo.genesis;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.resolver.ResolutionListener;
+import org.apache.maven.artifact.versioning.VersionRange;
+
+//
+// NOTE: Lifetd from the maven-project-info-plugin
+//
+
+/**
+ * ???
+ * 
+ * @version $Rev$ $Date$
+ */
+public class DependencyResolutionListener
+    implements ResolutionListener
+{
+    private Stack parents = new Stack();
+
+    private Map artifacts = new HashMap();
+
+    private Node rootNode;
+
+    private int currentDepth = 0;
+
+    public void testArtifact(Artifact artifact) {
+        // intentionally blank
+    }
+
+    public void startProcessChildren(Artifact artifact) {
+        Node node = (Node) artifacts.get(artifact.getDependencyConflictId());
+
+        node.depth = currentDepth++;
+        if (parents.isEmpty()) {
+            rootNode = node;
+        }
+
+        parents.push(node);
+    }
+
+    public void endProcessChildren(Artifact artifact) {
+        Node check = (Node) parents.pop();
+        assert artifact.equals(check.artifact);
+        currentDepth--;
+    }
+
+    public void omitForNearer(Artifact omitted, Artifact kept) {
+        assert omitted.getDependencyConflictId().equals(kept.getDependencyConflictId());
+
+        Node prev = (Node) artifacts.get(omitted.getDependencyConflictId());
+        if (prev != null) {
+            if (prev.parent != null) {
+                prev.parent.children.remove(prev);
+            }
+            artifacts.remove(omitted.getDependencyConflictId());
+        }
+
+        includeArtifact(kept);
+    }
+
+    public void omitForCycle(Artifact artifact) {
+        // intentionally blank
+    }
+
+    public void includeArtifact(Artifact artifact) {
+        if (artifacts.containsKey(artifact.getDependencyConflictId())) {
+            Node prev = (Node) artifacts.get(artifact.getDependencyConflictId());
+            if (prev.parent != null) {
+                prev.parent.children.remove(prev);
+            }
+            artifacts.remove(artifact.getDependencyConflictId());
+        }
+
+        Node node = new Node();
+        node.artifact = artifact;
+        if (!parents.isEmpty()) {
+            node.parent = (Node) parents.peek();
+            node.parent.children.add(node);
+            node.depth = currentDepth;
+        }
+        artifacts.put(artifact.getDependencyConflictId(), node);
+    }
+
+    public void updateScope(Artifact artifact, String scope) {
+        Node node = (Node) artifacts.get(artifact.getDependencyConflictId());
+
+        node.artifact.setScope(scope);
+    }
+
+    public void manageArtifact(Artifact artifact, Artifact replacement) {
+        Node node = (Node) artifacts.get(artifact.getDependencyConflictId());
+
+        if (node != null) {
+            if (replacement.getVersion() != null) {
+                node.artifact.setVersion(replacement.getVersion());
+            }
+            if (replacement.getScope() != null) {
+                node.artifact.setScope(replacement.getScope());
+            }
+        }
+    }
+
+    public void updateScopeCurrentPom(Artifact artifact, String key) {
+        // intentionally blank
+    }
+
+    public void selectVersionFromRange(Artifact artifact) {
+        // intentionally blank
+    }
+
+    public void restrictRange(Artifact artifact, Artifact artifact1, VersionRange versionRange) {
+        // intentionally blank
+    }
+
+    public Collection getArtifacts() {
+        return artifacts.values();
+    }
+
+    public static class Node
+    {
+        private Node parent;
+
+        private List children = new ArrayList();
+
+        private Artifact artifact;
+
+        private int depth;
+
+        public List getChildren() {
+            return children;
+        }
+
+        public Artifact getArtifact() {
+            return artifact;
+        }
+
+        public int getDepth() {
+            return depth;
+        }
+    }
+
+    public Node getRootNode() {
+        return rootNode;
+    }
+}
\ No newline at end of file

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/DependencyResolutionListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/MojoSupport.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/MojoSupport.java?view=diff&rev=454214&r1=454213&r2=454214
==============================================================================
--- geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/MojoSupport.java (original)
+++ geronimo/genesis/trunk/plugins/plugin-support/src/main/java/org/apache/geronimo/genesis/MojoSupport.java Sun Oct  8 14:16:04 2006
@@ -140,7 +140,7 @@
      * Sub-class must overridde to provide access.
      */
     protected MavenProject getProject() {
-        throw new Error("Sub-class must override to provide access");
+        throw new Error("Sub-class must override to provide access to : " + MavenProject.class);
     }
 
     /**
@@ -150,7 +150,7 @@
      * Sub-class must overridde to provide access.
      */
     protected ArtifactFactory getArtifactFactory() {
-        throw new Error("Sub-class must override to provide access");
+        throw new Error("Sub-class must override to provide access to: " + ArtifactFactory.class);
     }
 
     /**
@@ -160,7 +160,7 @@
      * Sub-class must overridde to provide access.
      */
     protected ArtifactResolver getArtifactResolver() {
-        throw new Error("Sub-class must override to provide access");
+        throw new Error("Sub-class must override to provide access to: " + ArtifactResolver.class);
     }
 
     /**
@@ -170,7 +170,7 @@
      * Sub-class must overridde to provide access.
      */
     protected ArtifactRepository getArtifactRepository() {
-        throw new Error("Sub-class must override to provide access");
+        throw new Error("Sub-class must override to provide access to: " + ArtifactRepository.class);
     }
 
     /**
@@ -185,7 +185,6 @@
                 throw new MojoExecutionException("Unable to find artifact version of " + item.getGroupId()
                     + ":" + item.getArtifactId() + " in either dependency list or in project's dependency management.");
             }
-
         }
 
         // Convert the string version to a range
@@ -238,7 +237,7 @@
 
         return artifact;
     }
-    
+
     /**
      * Tries to find missing version from dependancy list and dependency management.
      * If found, the artifact is updated with the correct version.
@@ -327,7 +326,8 @@
             ArtifactFilter newFilter = new ExcludesArtifactFilter(exclusions);
             artifact.setDependencyFilter(newFilter);
             
-            if (resolve) {
+            if (resolve && !artifact.isResolved()) {
+                log.debug("Resolving artifact: " + artifact);
                 artifact = resolveArtifact(artifact);
             }
 

Modified: geronimo/genesis/trunk/plugins/tools-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/tools-maven-plugin/pom.xml?view=diff&rev=454214&r1=454213&r2=454214
==============================================================================
--- geronimo/genesis/trunk/plugins/tools-maven-plugin/pom.xml (original)
+++ geronimo/genesis/trunk/plugins/tools-maven-plugin/pom.xml Sun Oct  8 14:16:04 2006
@@ -40,7 +40,6 @@
     </description>
     
     <dependencies>
-        
         <dependency>
             <groupId>org.apache.geronimo.genesis.plugins</groupId>
             <artifactId>plugin-support</artifactId>
@@ -52,7 +51,6 @@
             <artifactId>commons-lang</artifactId>
             <version>2.1</version>
         </dependency>
-        
     </dependencies>
 
     <build>

Added: geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java
URL: http://svn.apache.org/viewvc/geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java?view=auto&rev=454214
==============================================================================
--- geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java (added)
+++ geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java Sun Oct  8 14:16:04 2006
@@ -0,0 +1,179 @@
+/*
+ * 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.geronimo.genesis.plugins.tools;
+
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.InvalidDependencyVersionException;
+
+import org.apache.geronimo.genesis.MojoSupport;
+import org.apache.geronimo.genesis.Dependencies;
+import org.apache.geronimo.genesis.DependencyResolutionListener;
+
+/**
+ * Helper to show a projects dependencies.
+ *
+ * @goal show-dependencies
+ * 
+ * @version $Rev$ $Date$
+ */
+public class ShowDependenciesMojo
+    extends MojoSupport
+{
+    /**
+     * Enable verbose details (version and scope).
+     * 
+     * @parameter expression="${verbose}"
+     */
+    private boolean verbose = false;
+
+    protected void doExecute() throws Exception {
+        DependencyResolutionListener listener = resolveProject();
+        printDependencyListing(listener.getRootNode(), "");
+    }
+
+    private void printDependencyListing(DependencyResolutionListener.Node node, final String pad) {
+        Artifact artifact = node.getArtifact();
+        String id = artifact.getDependencyConflictId();
+
+        StringBuffer buff = new StringBuffer(id);
+        if (verbose) {
+            buff.append(" ");
+            buff.append("{ version=").append(artifact.getVersion());
+            buff.append(", scope=").append(artifact.getScope());
+            buff.append(" }");
+        }
+        log.info(pad + buff);
+
+        if (!node.getChildren().isEmpty()) {
+            for (Iterator deps = node.getChildren().iterator(); deps.hasNext();) {
+                DependencyResolutionListener.Node dep = (DependencyResolutionListener.Node) deps.next();
+                printDependencyListing(dep, pad + "    ");
+            }
+        }
+    }
+
+    private DependencyResolutionListener resolveProject()
+        throws ProjectBuildingException, ArtifactResolutionException, InvalidDependencyVersionException
+    {
+        Map managedVersions = Dependencies.getManagedVersionMap(project, artifactFactory);
+        DependencyResolutionListener listener = new DependencyResolutionListener();
+
+        if (project.getDependencyArtifacts() == null) {
+            project.setDependencyArtifacts(project.createArtifacts(artifactFactory, null, null));
+        }
+        
+        artifactCollector.collect(
+                project.getDependencyArtifacts(),
+                project.getArtifact(),
+                managedVersions,
+                localRepository,
+                project.getRemoteArtifactRepositories(),
+                artifactMetadataSource,
+                null,
+                Collections.singletonList(listener));
+
+        return listener;
+    }
+
+    /**
+     * @parameter
+     * @component
+     * @required
+     */
+    private ArtifactMetadataSource artifactMetadataSource = null;
+
+    /**
+     * ???
+     *
+     * @component
+     */
+    private ArtifactCollector artifactCollector = null;
+
+    /**
+     * Local Repository.
+     *
+     * @parameter expression="${localRepository}"
+     * @required
+     * @readonly
+     */
+    protected ArtifactRepository localRepository;
+
+    //
+    // MojoSupport Hooks
+    //
+
+    /**
+     * The maven project.
+     *
+     * @parameter expression="${project}"
+     * @required
+     * @readonly
+     */
+    protected MavenProject project;
+
+    protected MavenProject getProject() {
+        return project;
+    }
+
+    /**
+     * @component
+     * @required
+     * @readonly
+     */
+    private ArtifactFactory artifactFactory = null;
+
+    protected ArtifactFactory getArtifactFactory() {
+        return artifactFactory;
+    }
+
+    /**
+     * @component
+     * @required
+     * @readonly
+     */
+    private ArtifactResolver artifactResolver = null;
+
+    protected ArtifactResolver getArtifactResolver() {
+        return artifactResolver;
+    }
+
+    /**
+     * @parameter expression="${localRepository}"
+     * @readonly
+     * @required
+     */
+    protected ArtifactRepository artifactRepository = null;
+
+    protected ArtifactRepository getArtifactRepository() {
+        return artifactRepository;
+    }
+}

Propchange: geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/genesis/trunk/plugins/tools-maven-plugin/src/main/java/org/apache/geronimo/genesis/plugins/tools/ShowDependenciesMojo.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain