今天在配置工程环境时,遇到一个Ant问题,之前一直都是由同事来管理这类环境问题的,但是他离职了,只能自己来研究。
下面是旧版本工程的build.xml内容:
<?xml version="1.0" encoding="UTF-8"?> <project name="ccrl151" default="default" basedir="."> <description>Builds, tests, and runs the project ccrl151.</description> <import file="nbproject/build-impl.xml"/> <target name="-post-compile"> <signjar alias="codesign2015" keystore="${build.web.dir}//keystore.jks" storepass="xxxxxxxx" lazy="true"> <path> <fileset dir="${build.web.dir}//jsp/hiscroapplet/lib" includes="*.jar" /> <fileset dir="${build.web.dir}//jsp/hiscroapplet" includes="*.jar" /> </path> </signjar> </target> <target depends="-init-check" name="deploy-with-quicksearch"> <ant antfile="../ccrl151qh/build.xml" inheritall="false" target="dist"> <property name="deploy.on.save" value="false"/> </ant> <copy todir="${build.web.dir}"> <fileset dir="../ccrl151qh/build/web" excludes="META-INF/**,WEB-INF/**"/> </copy> </target> </project>
这里有两个target,每个target执行一个任务。前一个是对所有jar包进行签名。后一个是对资源项目进行构建,然后将构建好的资源复制到本项目的构建结果中。
但是我在创建新版本的工程之后,第二个target功能失效了。经过查看打印信息和分析,发现第二个target没有被执行,不知道是什么配置有问题。一时也没有搜索到什么方案,自己尝试着添加echo打印信息,并把第二个target再次拆分成两个target,看是哪个配置没有通过,发现后面的两个target都没有执行。再后来突发一想,我直接把3个target进行合并,就好了。最后也没有弄清楚为何以前多个target可以运行成功,而现在只允许运行一个target。难道是Ant版本或者其他版本的问题?
只有一个target的build.xml:
<?xml version="1.0" encoding="UTF-8"?> <project name="ccrl160" default="default" basedir="."> <description>Builds, tests, and runs the project ccrl160.</description> <import file="nbproject/build-impl.xml"/> <target name="-post-compile"> <echo message="start signjar..."/> <signjar alias="codesign2015" keystore="${build.web.dir}//keystore.jks" storepass="changeit" lazy="true"> <path> <fileset dir="${build.web.dir}//jsp/hiscroapplet/lib" includes="*.jar" /> <fileset dir="${build.web.dir}//jsp/hiscroapplet" includes="*.jar" /> </path> </signjar> <echo message="start buile quicksearch..."/> <ant antfile="../ccrl160qh/build.xml" inheritall="false" target="dist"> <property name="deploy.on.save" value="false"/> </ant> <echo message="start copy quicksearch..."/> <copy todir="${build.web.dir}"> <fileset dir="../ccrl160qh/build/web" excludes="META-INF/**,WEB-INF/**"/> </copy> </target></project>