You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by an...@apache.org on 2014/10/29 17:33:52 UTC

svn commit: r1635191 - in /maven/shared/trunk/maven-dependency-analyzer: ./ src/main/java/org/apache/maven/shared/dependency/analyzer/ src/test/java/org/apache/maven/shared/dependency/analyzer/ src/test/resources/multimoduleProject/ src/test/resources/...

Author: andham
Date: Wed Oct 29 16:33:52 2014
New Revision: 1635191

URL: http://svn.apache.org/r1635191
Log:
[MSHARED-361] DefaultProjectDependencyAnalyzer.buildArtifactClassMap assumes dependencies are jar files (regression)

Added:
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml   (with props)
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java   (with props)
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml   (with props)
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java   (with props)
    maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml   (with props)
Modified:
    maven/shared/trunk/maven-dependency-analyzer/pom.xml
    maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
    maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java

Modified: maven/shared/trunk/maven-dependency-analyzer/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/pom.xml?rev=1635191&r1=1635190&r2=1635191&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/pom.xml (original)
+++ maven/shared/trunk/maven-dependency-analyzer/pom.xml Wed Oct 29 16:33:52 2014
@@ -91,7 +91,7 @@
     <dependency>
       <groupId>org.apache.maven.plugin-testing</groupId>
       <artifactId>maven-plugin-testing-tools</artifactId>
-      <version>1.2</version>
+      <version>1.3</version>
       <scope>test</scope>
     </dependency>
     <dependency>

Modified: maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java?rev=1635191&r1=1635190&r2=1635191&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java Wed Oct 29 16:33:52 2014
@@ -19,11 +19,6 @@ package org.apache.maven.shared.dependen
  * under the License.
  */
 
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
@@ -37,6 +32,11 @@ import java.util.Set;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.component.annotations.Requirement;
+
 /**
  * @author <a href="mailto:markhobson@gmail.com">Mark Hobson</a>
  * @version $Id$
@@ -143,10 +143,9 @@ public class DefaultProjectDependencyAna
         {
             File file = artifact.getFile();
 
-            if ( file != null && ( file.getName().endsWith( ".jar" ) || file.isDirectory() ) )
+            if ( file != null && file.getName().endsWith( ".jar" ) )
             {
-                //URL url = file.toURI().toURL();
-
+                // optimized solution for the jar case
                 JarFile jarFile = new JarFile( file );
 
                 Enumeration<JarEntry> jarEntries = jarFile.entries();
@@ -164,8 +163,13 @@ public class DefaultProjectDependencyAna
 
                     }
                 }
-                // to slow
-                //Set<String> classes = classAnalyzer.analyze( url );
+
+                artifactClassMap.put( artifact, classes );
+            }
+            else if ( file != null && file.isDirectory() )
+            {
+                URL url = file.toURI().toURL();
+                Set<String> classes = classAnalyzer.analyze( url );
 
                 artifactClassMap.put( artifact, classes );
             }

Modified: maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java?rev=1635191&r1=1635190&r2=1635191&view=diff
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java (original)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java Wed Oct 29 16:33:52 2014
@@ -213,6 +213,36 @@ public class DefaultProjectDependencyAna
         //assertEquals( expectedAnalysis, actualAnalysis );
     }
 
+    public void testMultimoduleProject()
+        throws TestToolsException, ProjectDependencyAnalyzerException
+    {
+        compileProject( "multimoduleProject/pom.xml" );
+
+        // difficult to create multi-module project with Maven 2.x, so here's hacky solution
+        // to get a inter-module dependency
+        MavenProject project = getProject( "multimoduleProject/module2/pom.xml" );
+        @SuppressWarnings( "unchecked" )
+        Set<Artifact> dependencyArtifacts = project.getArtifacts();
+        for ( Artifact artifact : dependencyArtifacts )
+        {
+            if ( artifact.getArtifactId().equals( "test-module1" ) )
+            {
+                File dir = getTestFile( "target/test-classes/", "multimoduleProject/module1/target/classes/" );
+                artifact.setFile( dir );
+            }
+        }
+
+        ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project );
+
+        Artifact junit = createArtifact( "org.apache.maven.its.dependency", "test-module1", "jar", "1.0", "compile" );
+        Set<Artifact> usedDeclaredArtifacts = Collections.singleton( junit );
+
+        ProjectDependencyAnalysis expectedAnalysis =
+            new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null );
+
+        assertEquals( expectedAnalysis, actualAnalysis );
+    }
+
     // private methods --------------------------------------------------------
 
     private void compileProject( String pomPath )

Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml?rev=1635191&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml Wed Oct 29 16:33:52 2014
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.maven.its.dependency</groupId>
+    <artifactId>test-parent</artifactId>
+    <version>1.0</version>
+  </parent>
+
+  <artifactId>test-module1</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>2.0.6</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>2.0.6</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>2.0.6</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java?rev=1635191&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java Wed Oct 29 16:33:52 2014
@@ -0,0 +1,32 @@
+/*
+ * 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 foo;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.metadata.Metadata;
+import org.apache.maven.model.Model;
+
+public class Main
+{
+    public static final String SCOPE_COMPILE = Artifact.SCOPE_COMPILE;
+
+    public Model model = null;
+
+    public Metadata metadata = null;
+}

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module1/src/main/java/foo/Main.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml?rev=1635191&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml Wed Oct 29 16:33:52 2014
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.maven.its.dependency</groupId>
+    <artifactId>test-parent</artifactId>
+    <version>1.0</version>
+  </parent>
+
+  <artifactId>test-module2</artifactId>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.its.dependency</groupId>
+      <artifactId>test-module1</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java?rev=1635191&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java Wed Oct 29 16:33:52 2014
@@ -0,0 +1,24 @@
+/*
+ * 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 bar;
+
+public class Main
+{
+    public foo.Main dummy = null;
+}

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/module2/src/main/java/bar/Main.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml?rev=1635191&view=auto
==============================================================================
--- maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml (added)
+++ maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml Wed Oct 29 16:33:52 2014
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.its.dependency</groupId>
+  <artifactId>test-parent</artifactId>
+  <version>1.0</version>
+  <packaging>pom</packaging>
+
+  <name>Test</name>
+  <description>
+    Test dependency:analyze on a multi-module project
+  </description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  
+  <modules>
+    <module>module1</module>
+    <module>module2</module>
+  </modules>
+</project>

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/shared/trunk/maven-dependency-analyzer/src/test/resources/multimoduleProject/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain