changeset 6:c989b9aa8820

USASR-644: Add ant task to replace existing ant targets
author smith@nwoca.org
date Wed, 12 Oct 2011 12:59:32 -0400
parents de1522a9d4bc
children 418ba4cfc553
files build.xml src/org/ssdt_ohio/tools/ant/ReplaceTargetTask.java src/org/ssdt_ohio/tools/ant/antlib.xml
diffstat 3 files changed, 52 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/build.xml	Mon Aug 08 13:38:54 2011 -0400
+++ b/build.xml	Wed Oct 12 12:59:32 2011 -0400
@@ -1,74 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- You may freely edit this file. See commented blocks below for -->
-<!-- some examples of how to customize the build. -->
-<!-- (If you delete it and reopen the project it will be recreated.) -->
-<!-- By default, only the Clean and Build commands use this build script. -->
-<!-- Commands such as Run, Debug, and Test only use this build script if -->
-<!-- the Compile on Save feature is turned off for the project. -->
-<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
-<!-- in the project's Project Properties dialog box.-->
 <project name="SSDT_Ant_Tasks" default="default" basedir=".">
     <description>Builds, tests, and runs the project SSDT Ant Tasks.</description>
     <import file="nbproject/build-impl.xml"/>
-    <!--
 
-    There exist several targets which are by default empty and which can be 
-    used for execution of your tasks. These targets are usually executed 
-    before and after some main targets. They are: 
-
-      -pre-init:                 called before initialization of project properties
-      -post-init:                called after initialization of project properties
-      -pre-compile:              called before javac compilation
-      -post-compile:             called after javac compilation
-      -pre-compile-single:       called before javac compilation of single file
-      -post-compile-single:      called after javac compilation of single file
-      -pre-compile-test:         called before javac compilation of JUnit tests
-      -post-compile-test:        called after javac compilation of JUnit tests
-      -pre-compile-test-single:  called before javac compilation of single JUnit test
-      -post-compile-test-single: called after javac compilation of single JUunit test
-      -pre-jar:                  called before JAR building
-      -post-jar:                 called after JAR building
-      -post-clean:               called after cleaning build products
-
-    (Targets beginning with '-' are not intended to be called on their own.)
-
-    Example of inserting an obfuscator after compilation could look like this:
-
-        <target name="-post-compile">
-            <obfuscate>
-                <fileset dir="${build.classes.dir}"/>
-            </obfuscate>
-        </target>
-
-    For list of available properties check the imported 
-    nbproject/build-impl.xml file. 
-
-
-    Another way to customize the build is by overriding existing main targets.
-    The targets of interest are: 
-
-      -init-macrodef-javac:     defines macro for javac compilation
-      -init-macrodef-junit:     defines macro for junit execution
-      -init-macrodef-debug:     defines macro for class debugging
-      -init-macrodef-java:      defines macro for class execution
-      -do-jar-with-manifest:    JAR building (if you are using a manifest)
-      -do-jar-without-manifest: JAR building (if you are not using a manifest)
-      run:                      execution of project 
-      -javadoc-build:           Javadoc generation
-      test-report:              JUnit report generation
-
-    An example of overriding the target for project execution could look like this:
-
-        <target name="run" depends="SSDT_Ant_Tasks-impl.jar">
-            <exec dir="bin" executable="launcher.exe">
-                <arg file="${dist.jar}"/>
-            </exec>
-        </target>
-
-    Notice that the overridden target depends on the jar target and not only on 
-    the compile target as the regular run target does. Again, for a list of available 
-    properties which you can use, check the target you are overriding in the
-    nbproject/build-impl.xml file. 
-
-    -->
+    <target name="deploy.locally" depends="jar">
+        <copy file="${dist.dir}/ssdt-ant.jar" tofile="${user.home}/.ant/lib/ssdt-ant.jar"/>
+    </target>
+    
 </project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/ssdt_ohio/tools/ant/ReplaceTargetTask.java	Wed Oct 12 12:59:32 2011 -0400
@@ -0,0 +1,47 @@
+package org.ssdt_ohio.tools.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Target;
+import org.apache.tools.ant.Task;
+
+/** @author smith */
+public class ReplaceTargetTask extends Task {
+
+    private String target;
+    private String with;
+
+    @Override
+    public void execute() throws BuildException {
+        if (target == null) {
+            throw new BuildException("'target' attribute is required");
+        }
+        if (with == null) {
+            throw new BuildException("'with' attribute is required");
+        }
+
+        Target t = (Target) getProject().getTargets().get(target);
+        if (t == null) {
+            log(target + " to be replaced does not exist", Project.MSG_VERBOSE);
+        } else {
+            Target withTarget = (Target) getProject().getTargets().get(with);
+            if (withTarget == null) {
+                log(with + " replacement target does not exist", Project.MSG_ERR);
+            } else {
+                Target newTarget = new Target(withTarget);
+                newTarget.setName(target);
+                getProject().addOrReplaceTarget(newTarget);
+                
+                log(target + " target replaced by " + with, Project.MSG_INFO);
+            }
+        }
+    }
+
+    public void setTarget(String target) {
+        this.target = target;
+    }
+
+    public void setWith(String with) {
+        this.with = with;
+    }
+}
--- a/src/org/ssdt_ohio/tools/ant/antlib.xml	Mon Aug 08 13:38:54 2011 -0400
+++ b/src/org/ssdt_ohio/tools/ant/antlib.xml	Wed Oct 12 12:59:32 2011 -0400
@@ -1,4 +1,5 @@
 <antlib>
     <taskdef name="add-dependency" classname="org.ssdt_ohio.tools.ant.AddDependencyTask" onerror="ignore" />
+    <taskdef name="replace-target" classname="org.ssdt_ohio.tools.ant.ReplaceTargetTask" onerror="ignore" />
     <taskdef name="wsdlsetup" classname="org.ssdt_ohio.tools.ant.WsdlSetup" onerror="ignore" />
 </antlib>
\ No newline at end of file