Mercurial > public > ssdtant
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