diff --git a/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/invoker.properties b/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/invoker.properties
new file mode 100644
index 0000000000..e596121937
--- /dev/null
+++ b/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/invoker.properties
@@ -0,0 +1,18 @@
+# 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.
+
+invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:go-offline
diff --git a/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/pom.xml b/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/pom.xml
new file mode 100644
index 0000000000..a69b7b830a
--- /dev/null
+++ b/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/pom.xml
@@ -0,0 +1,57 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.maven.its.dependency
+ test
+ 1.0-SNAPSHOT
+
+ Test
+
+ Test dependency:go-offline
+
+
+
+ UTF-8
+
+
+
+
+ org.apache.maven
+ maven-project
+ 2.0.6
+
+
+ non.existant.group
+ fake
+ 1.0.0
+
+
+ org.apache.maven
+ non.existant.artifact
+ 1.0.0
+
+
+
+
diff --git a/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/test.properties b/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/test.properties
new file mode 100644
index 0000000000..6e8a5e5fa5
--- /dev/null
+++ b/maven-dependency-plugin/src/it/projects/mdep-568-go-offline-exclude/test.properties
@@ -0,0 +1,19 @@
+# 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.
+
+excludeGroupIds = non.existant.group
+excludeArtifactIds= non.existant.artifact
diff --git a/maven-dependency-plugin/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java b/maven-dependency-plugin/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
index ab67b226a5..bf74896501 100644
--- a/maven-dependency-plugin/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
+++ b/maven-dependency-plugin/src/main/java/org/apache/maven/plugins/dependency/resolvers/GoOfflineMojo.java
@@ -21,13 +21,15 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.dependency.utils.DependencyUtil;
import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.plugins.dependency.utils.DependencyStatusSets;
+import org.apache.maven.plugins.dependency.utils.DependencyUtil;
+import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter;
-
-import java.util.Set;
+import org.apache.maven.shared.artifact.resolve.ArtifactResolverException;
/**
* Goal that resolves all project dependencies, including plugins and reports and their dependencies.
@@ -36,14 +38,24 @@
* @version $Id$
* @since 2.0
*/
-@Mojo( name = "go-offline", requiresDependencyResolution = ResolutionScope.TEST, threadSafe = true )
+@Mojo( name = "go-offline", requiresDependencyCollection = ResolutionScope.TEST, threadSafe = true )
@Execute( goal = "resolve-plugins" )
public class GoOfflineMojo
extends AbstractResolveMojo
{
/**
- * Main entry into mojo. Gets the list of dependencies and iterates through displaying the resolved version.
+ * Include parent poms in the dependency resolution list.
+ *
+ * @since 3.0.3
+ */
+ @Parameter( property = "includeParents", defaultValue = "false" )
+ private boolean includeParents;
+
+ /**
+ * Main entry into mojo. Gets the list of dependencies, filters them by the include/exclude parameters
+ * provided and iterates through downloading the resolved version.
+ * if the version is not present in the local repository.
*
* @throws MojoExecutionException with a message if an error occurs.
*/
@@ -51,13 +63,24 @@ public class GoOfflineMojo
protected void doExecute()
throws MojoExecutionException
{
- Set artifacts = getProject().getArtifacts();
- if ( !isSilent() )
+ DependencyStatusSets results = this.getDependencySets( false, includeParents );
+
+ ProjectBuildingRequest buildingRequest = newResolveArtifactProjectBuildingRequest();
+ for ( Artifact artifact : results.getResolvedDependencies() )
{
- for ( Artifact artifact : artifacts )
+ try
+ {
+ getArtifactResolver().resolveArtifact( buildingRequest, artifact );
+ if ( !isSilent() )
+ {
+ this.getLog().info( "Resolved: "
+ + DependencyUtil.getFormattedFileName( artifact, false ) );
+ }
+ }
+ catch ( ArtifactResolverException e )
{
- this.getLog().info( "Resolved: " + DependencyUtil.getFormattedFileName( artifact, false ) );
+ throw new MojoExecutionException( "Failed to resolve artifact: " + artifact, e );
}
}
}