[MDEP-708] dependency:analyze should recommend narrower scope where possible (#18)
* change non-test scoped to compile scope for detecting a narrower possible scope for test dependencies
diff --git a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
index a59cba8..7b05372 100644
--- a/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
+++ b/src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java
@@ -141,7 +141,7 @@
for ( Artifact artifact : testOnlyArtifacts )
{
- if ( !artifact.getScope().equals( "test" ) )
+ if ( artifact.getScope().equals( "compile" ) )
{
nonTestScopeArtifacts.add( artifact );
}
diff --git a/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java b/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
index df528f9..807be0f 100644
--- a/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzerTest.java
@@ -278,18 +278,18 @@
// assertEquals( expectedAnalysis, actualAnalysis );
}
- public void testJarWithNonTestScopedTestDependency()
+ public void testJarWithCompileScopedTestDependency()
throws TestToolsException, ProjectDependencyAnalyzerException
{
- compileProject( "jarWithNonTestScopedTestDependency/pom.xml" );
+ compileProject( "jarWithCompileScopedTestDependency/pom.xml" );
- MavenProject project2 = getProject( "jarWithNonTestScopedTestDependency/project2/pom.xml" );
+ MavenProject project2 = getProject( "jarWithCompileScopedTestDependency/project2/pom.xml" );
ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
Artifact artifact1 = createArtifact( "org.apache.maven.shared.dependency-analyzer.tests",
- "jarWithNonTestScopedTestDependency1", "jar", "1.0", "test" );
- Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "test" );
+ "jarWithCompileScopedTestDependency1", "jar", "1.0", "test" );
+ Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "compile" );
ProjectDependencyAnalysis expectedAnalysis;
if ( SystemUtils.isJavaVersionAtLeast( JavaVersion.JAVA_1_8 ) )
@@ -311,6 +311,38 @@
assertEquals( expectedAnalysis, actualAnalysis );
}
+ public void testJarWithRuntimeScopedTestDependency() throws TestToolsException, ProjectDependencyAnalyzerException
+ {
+ // We can't effectively analyze runtime dependencies at this time
+ compileProject( "jarWithRuntimeScopedTestDependency/pom.xml" );
+
+ MavenProject project2 = getProject( "jarWithRuntimeScopedTestDependency/project2/pom.xml" );
+
+ ProjectDependencyAnalysis actualAnalysis = analyzer.analyze( project2 );
+
+ Artifact artifact1 = createArtifact( "org.apache.maven.shared.dependency-analyzer.tests",
+ "jarWithRuntimeScopedTestDependency1", "jar", "1.0", "test" );
+ Artifact junit = createArtifact( "junit", "junit", "jar", "3.8.1", "runtime" );
+
+ ProjectDependencyAnalysis expectedAnalysis;
+ if ( SystemUtils.isJavaVersionAtLeast( JavaVersion.JAVA_1_8 ) )
+ {
+ Set<Artifact> usedDeclaredArtifacts = new HashSet<>( Arrays.asList( artifact1, junit ) );
+ expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, null,
+ null );
+ }
+ else
+ {
+ // With JDK 7 and earlier, not all deps are identified correctly
+ Set<Artifact> usedDeclaredArtifacts = Collections.singleton( artifact1 );
+ Set<Artifact> unUsedDeclaredArtifacts = Collections.singleton( junit );
+ expectedAnalysis = new ProjectDependencyAnalysis( usedDeclaredArtifacts, null, unUsedDeclaredArtifacts,
+ null );
+ }
+
+ assertEquals( expectedAnalysis, actualAnalysis );
+ }
+
public void testMultimoduleProject()
throws TestToolsException, ProjectDependencyAnalyzerException
{
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml b/src/test/resources/jarWithCompileScopedTestDependency/pom.xml
similarity index 95%
rename from src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
rename to src/test/resources/jarWithCompileScopedTestDependency/pom.xml
index cbb658f..410249b 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
+++ b/src/test/resources/jarWithCompileScopedTestDependency/pom.xml
@@ -26,7 +26,7 @@
>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency</artifactId>
+ <artifactId>jarWithCompileScopedTestDependency</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml b/src/test/resources/jarWithCompileScopedTestDependency/project1/pom.xml
similarity index 95%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
copy to src/test/resources/jarWithCompileScopedTestDependency/project1/pom.xml
index 8959315..8528b65 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
+++ b/src/test/resources/jarWithCompileScopedTestDependency/project1/pom.xml
@@ -26,7 +26,7 @@
>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+ <artifactId>jarWithCompileScopedTestDependency1</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java b/src/test/resources/jarWithCompileScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
similarity index 100%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
rename to src/test/resources/jarWithCompileScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml b/src/test/resources/jarWithCompileScopedTestDependency/project2/pom.xml
similarity index 93%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
rename to src/test/resources/jarWithCompileScopedTestDependency/project2/pom.xml
index 5a7a1b0..d2dd865 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
+++ b/src/test/resources/jarWithCompileScopedTestDependency/project2/pom.xml
@@ -26,7 +26,7 @@
>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency2</artifactId>
+ <artifactId>jarWithCompileScopedTestDependency2</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
@@ -45,7 +45,7 @@
<dependencies>
<dependency>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+ <artifactId>jarWithCompileScopedTestDependency1</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java b/src/test/resources/jarWithCompileScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
similarity index 100%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
rename to src/test/resources/jarWithCompileScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml b/src/test/resources/jarWithRuntimeScopedTestDependency/pom.xml
similarity index 95%
copy from src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
copy to src/test/resources/jarWithRuntimeScopedTestDependency/pom.xml
index cbb658f..bfa6ed3 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/pom.xml
+++ b/src/test/resources/jarWithRuntimeScopedTestDependency/pom.xml
@@ -26,7 +26,7 @@
>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency</artifactId>
+ <artifactId>jarWithRuntimeScopedTestDependency</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml b/src/test/resources/jarWithRuntimeScopedTestDependency/project1/pom.xml
similarity index 95%
rename from src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
rename to src/test/resources/jarWithRuntimeScopedTestDependency/project1/pom.xml
index 8959315..2a0cd3e 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project1/pom.xml
+++ b/src/test/resources/jarWithRuntimeScopedTestDependency/project1/pom.xml
@@ -26,7 +26,7 @@
>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+ <artifactId>jarWithRuntimeScopedTestDependency1</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java b/src/test/resources/jarWithRuntimeScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
similarity index 100%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
copy to src/test/resources/jarWithRuntimeScopedTestDependency/project1/src/main/java/jarWithTestDependency/project1/Project1.java
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml b/src/test/resources/jarWithRuntimeScopedTestDependency/project2/pom.xml
similarity index 92%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
copy to src/test/resources/jarWithRuntimeScopedTestDependency/project2/pom.xml
index 5a7a1b0..bfe9fc2 100644
--- a/src/test/resources/jarWithNonTestScopedTestDependency/project2/pom.xml
+++ b/src/test/resources/jarWithRuntimeScopedTestDependency/project2/pom.xml
@@ -26,7 +26,7 @@
>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency2</artifactId>
+ <artifactId>jarWithRuntimeScopedTestDependency2</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
@@ -45,7 +45,7 @@
<dependencies>
<dependency>
<groupId>org.apache.maven.shared.dependency-analyzer.tests</groupId>
- <artifactId>jarWithNonTestScopedTestDependency1</artifactId>
+ <artifactId>jarWithRuntimeScopedTestDependency1</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
@@ -54,6 +54,7 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
+ <scope>runtime</scope>
</dependency>
</dependencies>
diff --git a/src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java b/src/test/resources/jarWithRuntimeScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
similarity index 100%
copy from src/test/resources/jarWithNonTestScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java
copy to src/test/resources/jarWithRuntimeScopedTestDependency/project2/src/test/java/jarWithTestDependency/project2/Project2.java