1 /*
2 * #%L
3 * Native ARchive plugin for Maven
4 * %%
5 * Copyright (C) 2002 - 2014 NAR Maven Plugin developers.
6 * %%
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * #L%
19 */
20 package com.github.maven_nar;
21
22 import java.util.List;
23
24 import org.apache.maven.artifact.Artifact;
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.plugin.MojoFailureException;
27 import org.apache.maven.plugins.annotations.LifecyclePhase;
28 import org.apache.maven.plugins.annotations.Mojo;
29 import org.apache.maven.plugins.annotations.Parameter;
30 import org.apache.maven.plugins.annotations.ResolutionScope;
31 import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
32
33 /**
34 * List all the dependencies which are needed by the project (for compilation,
35 * tests, and execution) and downloads
36 * the NAR files in local maven repository if needed. This includes the noarch
37 * and aol type NAR files.
38 *
39 * Technical note : the requiresDependencyResolution = ResolutionScope.TEST in
40 * the Mojo Annotation is important to
41 * get all the dependencies including test dependencies.
42 *
43 * @author Mark Donszelmann
44 */
45 @Mojo(name = "nar-download", defaultPhase = LifecyclePhase.INITIALIZE, requiresProject = true,
46 requiresDependencyResolution = ResolutionScope.TEST)
47 public class NarDownloadMojo extends AbstractDependencyMojo {
48
49 /**
50 * List of tests to create
51 */
52 @Parameter
53 private List tests;
54
55 /**
56 * List all the dependencies which are needed by the project (for compilation,
57 * tests, and execution).
58 */
59 @Override
60 protected ScopeFilter getArtifactScopeFilter() {
61 return new ScopeFilter( Artifact.SCOPE_TEST, null );
62 }
63
64 @Override
65 public void narExecute() throws MojoFailureException, MojoExecutionException {
66 final List<AttachedNarArtifact> attachedNarArtifacts = getAttachedNarArtifacts(libraries);
67 attachedNarArtifacts.addAll( getAttachedNarArtifacts(tests) );
68 downloadAttachedNars(attachedNarArtifacts);
69 }
70 }