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 ); } } }