Author: hboutemy
Date: Sat Jul 17 16:07:18 2010
New Revision: 965098
URL: http://svn.apache.org/viewvc?rev=965098&view=rev
Log:
[MANTTASKS-190] added dependency scope validation
Modified:
maven/ant-tasks/trunk/build-tests.xml
maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
maven/ant-tasks/trunk/src/site/apt/reference.apt
Modified: maven/ant-tasks/trunk/build-tests.xml
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/build-tests.xml?rev=965098&r1=965097&r2=965098&view=diff
==============================================================================
--- maven/ant-tasks/trunk/build-tests.xml (original)
+++ maven/ant-tasks/trunk/build-tests.xml Sat Jul 17 16:07:18 2010
@@ -65,8 +65,12 @@
<target name="test-all-deps" description="All dependencies tests"
depends="test-pom, test-pom-profiles,
test-pom-with-parent,test-no-deps,test-pom-deps,
test-deps-two-repos,test-deps,test-legacy-pom,test-deps-mirror,test-deps-order,
-
test-deps-sources,test-deps-sources-empty,test-deps-profile,test-deps-scopes,test-system-scope">
- <echo>test-bad-dep and test-invalid-pom-ref must be run manually, since
they are intended to fail</echo>
+
test-deps-sources,test-deps-sources-empty,test-deps-profile,test-deps-scopes,test-system-scope,
+ test-bad-scope">
+ <echo>Some tests must be run manually, since they are intended to fail:
+ - test-bad-dep
+ - test-invalid-pom-ref
+ </echo>
</target>
<target name="test-all-pubs" description="All publication tests
(install/deploy)"
@@ -93,11 +97,19 @@
</target>
<target name="test-bad-dep" depends="initTaskDefs">
+ <echo>Expected failure because foo:foo:jar:1.0-alpha-2 artifact does
not exist.</echo>
<artifact:dependencies pathId="dependency.classpath"
filesetId="dependency.fileset">
<dependency groupId="foo" artifactId="foo" version="1.0-alpha-2"/>
</artifact:dependencies>
</target>
+ <target name="test-bad-scope" depends="initTaskDefs">
+ <echo>Expected warning because 'bad-value' is not a valid scope. Error
message must show official scopes. See MANTTASKS-190 for more
information.</echo>
+ <artifact:dependencies>
+ <dependency groupId="commons-logging" artifactId="commons-logging"
version="1.1.1" scope="bad-value"/>
+ </artifact:dependencies>
+ </target>
+
<target name="test-pom" depends="initTaskDefs">
<artifact:pom file="pom.xml" id="my.maven.project"/>
Modified:
maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=965098&r1=965097&r2=965098&view=diff
==============================================================================
---
maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
(original)
+++
maven/ant-tasks/trunk/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
Sat Jul 17 16:07:18 2010
@@ -44,6 +44,7 @@ import org.codehaus.plexus.util.StringUt
import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -62,6 +63,14 @@ import java.util.Set;
public class DependenciesTask
extends AbstractArtifactWithRepositoryTask
{
+ private static final String[] SCOPES = { Artifact.SCOPE_COMPILE,
Artifact.SCOPE_PROVIDED, Artifact.SCOPE_RUNTIME,
+ Artifact.SCOPE_TEST };
+
+ private static final Set<String> SCOPES_SET;
+ static
+ {
+ SCOPES_SET = new HashSet<String>( Arrays.asList( SCOPES ) );
+ }
public static final String DEFAULT_ANT_BUILD_FILE =
"target/build-dependencies.xml";
@@ -94,8 +103,8 @@ public class DependenciesTask
private String versionsId;
/**
- * A specific maven scope used to determine which dependencies are
resolved.
- * This takes only a single scope and uses the standard maven
ScopeArtifactFilter.
+ * A specific Maven scope used to determine which dependencies are
resolved.
+ * This takes only a single scope and uses the standard Maven
ScopeArtifactFilter.
*/
private String useScope;
@@ -179,6 +188,21 @@ public class DependenciesTask
{
log( "There were no dependencies specified", Project.MSG_WARN );
}
+ else
+ {
+ // check scopes
+ for ( Dependency dependency : dependencies )
+ {
+ String scope = dependency.getScope();
+
+ if ( ( scope != null ) && !SCOPES_SET.contains( scope ) )
+ {
+ // see MANTTASKS-190
+ log( "Unknown scope='" + scope + "' for " + dependency +
", supported scopes are: " + SCOPES_SET,
+ Project.MSG_WARN );
+ }
+ }
+ }
log( "Resolving dependencies...", Project.MSG_VERBOSE );
@@ -537,8 +561,8 @@ public class DependenciesTask
}
/**
- * Use the maven artifact filtering for a particular scope. This
- * uses the standard maven ScopeArtifactFilter.
+ * Use the Maven artifact filtering for a particular scope. This
+ * uses the standard Maven ScopeArtifactFilter.
*
* @param useScope
*/
@@ -573,7 +597,7 @@ public class DependenciesTask
*/
public void setAddArtifactFileSetRefs( boolean addArtifactFileSetRefs )
{
- this.log( "Parameter addArtifactFileSetRefs is deprecated. A fileset
ref is always created" +
+ this.log( "Parameter addArtifactFileSetRefs is deprecated. A fileset
ref is always created " +
"for each dependency.", Project.MSG_WARN );
}
Modified: maven/ant-tasks/trunk/src/site/apt/reference.apt
URL:
http://svn.apache.org/viewvc/maven/ant-tasks/trunk/src/site/apt/reference.apt?rev=965098&r1=965097&r2=965098&view=diff
==============================================================================
--- maven/ant-tasks/trunk/src/site/apt/reference.apt (original)
+++ maven/ant-tasks/trunk/src/site/apt/reference.apt Sat Jul 17 16:07:18 2010
@@ -102,7 +102,7 @@
*------------------+--------------------------------------------------------+--------------+
| <<<classifier>>> | The classifier of the dependency. |
No |
*------------------+--------------------------------------------------------+--------------+
-| <<<scope>>> | The scope of the usage of the dependency, which affects
which of that dependency's own dependencies are also retrieved. This can be
<<<compile>>>, <<<runtime>>>, <<<test>>>, <<<provided>>>. | No |
+| <<<scope>>> | The scope of the usage of the dependency, which
{{{http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope}}
affects which of that dependency's own dependencies are also retrieved}. This
can be <<<compile>>> (default), <<<runtime>>>, <<<test>>>, <<<provided>>>. | No
|
*------------------+--------------------------------------------------------+--------------+
The dependency can also nest multiple <<<exclusion>>> elements.