View Javadoc

1   package org.apache.torque.mojo;
2   
3   import org.apache.maven.plugin.MojoExecutionException;
4   import org.apache.tools.ant.Project;
5   import org.apache.tools.ant.Task;
6   import org.apache.torque.util.MojoAntBuildListener;
7   import org.kuali.core.db.torque.FilteredPropertyCopier;
8   
9   /**
10   * A base class for mojos that wrap an Ant Task
11   */
12  public class AntTaskMojo extends BaseMojo {
13  
14  	/**
15  	 * The ant task to be executed by this mojo.
16  	 */
17  	private Task antTask;
18  
19  	/**
20  	 * The ant project for the ant task.
21  	 */
22  	private Project antProject;
23  
24  	/**
25  	 * Configures the Ant task which is wrapped by this mojo.
26  	 */
27  	protected void configureTask() throws MojoExecutionException {
28  		if (getAntTask() == null) {
29  			throw new IllegalArgumentException("Ant task is null");
30  		}
31  
32  		// Attach our task to a project
33  		setAntProject(getIniatializedAntProject());
34  		getAntTask().setProject(getAntProject());
35  		try {
36  			// Copy configuration from the mojo to the task
37  			FilteredPropertyCopier copier = new FilteredPropertyCopier();
38  			// There is a setProject() method on an Ant Task that expects an Ant Project. This conflicts with
39  			// getProject() from the mojo which returns a Maven Project
40              copier.addExclude("project");
41              copier.addExclude("driverProperties");
42  			copier.copyProperties(getAntTask(), this);
43  		} catch (Exception e) {
44  			throw new MojoExecutionException("Error copying properties", e);
45  		}
46  	}
47  
48  	/**
49  	 * Configure the Ant task and then execute it
50  	 */
51  	@Override
52      public void executeMojo() throws MojoExecutionException {
53  		configureTask();
54  		getAntTask().execute();
55  	}
56  
57  	/**
58  	 * Return an Ant project that informs Maven about logging events
59  	 */
60  	protected Project getIniatializedAntProject() {
61  		getLog().info("Initializing the Ant Project");
62  		// Create a new Ant Project
63  		Project antProject = new Project();
64  		// initialize it
65  		antProject.init();
66  		// Add a listener that gets notified about log messages
67  		antProject.addBuildListener(new MojoAntBuildListener(getLog()));
68  		// Return the initialized ant project
69  		return antProject;
70  	}
71  
72  	public Project getAntProject() {
73  		return antProject;
74  	}
75  
76  	public void setAntProject(Project antProject) {
77  		this.antProject = antProject;
78  	}
79  
80  	public Task getAntTask() {
81  		return antTask;
82  	}
83  
84  	public void setAntTask(Task antTask) {
85  		this.antTask = antTask;
86  	}
87  }