1 package org.apache.maven.plugin.antrun;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import java.io.File;
23 import java.util.List;
24
25 import org.apache.maven.plugin.MojoExecutionException;
26 import org.apache.maven.project.MavenProject;
27 import org.apache.tools.ant.Target;
28
29 /**
30 * Maven AntRun Mojo.
31 *
32 * This plugin provides the capability of calling Ant tasks
33 * from a POM by running the nested ant tasks inside the <tasks/>
34 * parameter. It is encouraged to move the actual tasks to
35 * a separate build.xml file and call that file with an
36 * <ant/> task.
37 *
38 * @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
39 * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
40 * @version $Id: AntRunMojo.html 816154 2012-05-06 21:49:58Z hboutemy $
41 * @configurator override
42 * @goal run
43 * @requiresDependencyResolution test
44 */
45 public class AntRunMojo
46 extends AbstractAntMojo
47 {
48 /**
49 * The Maven project object
50 *
51 * @parameter expression="${project}"
52 * @required
53 * @readonly
54 */
55 private MavenProject project;
56
57 /**
58 * The plugin dependencies.
59 *
60 * @parameter expression="${plugin.artifacts}"
61 * @required
62 * @readonly
63 */
64 private List pluginArtifacts;
65
66 /**
67 * The XML for the Ant task. You can add anything you can add
68 * between <target> and </target> in a build.xml.
69 *
70 * @parameter expression="${tasks}"
71 */
72 private Target tasks;
73
74 /**
75 * This folder is added to the list of those folders
76 * containing source to be compiled. Use this if your
77 * ant script generates source code.
78 *
79 * @parameter expression="${sourceRoot}"
80 */
81 private File sourceRoot;
82
83 /**
84 * This folder is added to the list of those folders
85 * containing source to be compiled for testing. Use this if your
86 * ant script generates test source code.
87 *
88 * @parameter expression="${testSourceRoot}"
89 */
90 private File testSourceRoot;
91
92 /**
93 * @see org.apache.maven.plugin.Mojo#execute()
94 */
95 public void execute()
96 throws MojoExecutionException
97 {
98 executeTasks( tasks, project, pluginArtifacts );
99
100 if ( sourceRoot != null )
101 {
102 getLog().info( "Registering compile source root " + sourceRoot );
103 project.addCompileSourceRoot( sourceRoot.toString() );
104 }
105
106 if ( testSourceRoot != null )
107 {
108 getLog().info( "Registering compile test source root " + testSourceRoot );
109 project.addTestCompileSourceRoot( testSourceRoot.toString() );
110 }
111 }
112 }