从同一个 ANT 构建文件构建两个 jar 文件
Build two jar files from same ANT build file
我正在尝试构建两个 jar 文件 - 一个仅包含与应用程序相关的 classes,另一个包含测试用例。然而,生成的两个罐子同时具有 classes 和测试用例。
PFB 构建的片段 XML。
<target name="compile" description="generate the distribution" depends="init">
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarname}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="compilewithtest" description="generate the distribution with test" depends="init,compile">
<javac srcdir="${test}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarnamewithtest}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="deploy">
<antcall target="clean" />
<antcall target="compile" />
<antcall target="compilewithtest" />
<antcall target="junitreport" />
</target>
<target name="clean">
<delete dir="${basedir}/dist" />
<delete dir="${basedir}/report" />
</target>
是否无法从同一个 classes 目录生成两个 jar?我该如何解决这个问题?
编辑 -
如果 class 目录不同,它会起作用。是不是可以使用相同的目录。下面突出显示的部分是多余的。
<target name="compile" description="generate the distribution" depends="init">
**<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">**
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarname}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="compilewithtest" description="generate the distribution with test" depends="init,compile">
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/class">
<classpath refid="class.path" />
</javac>
**<javac srcdir="${test}" debug="${debug}" destdir="${basedir}/dist/class">**
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarnamewithtest}.jar" basedir="${basedir}/dist/class">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="deploy">
<antcall target="clean" />
<antcall target="compile" />
<antcall target="compilewithtest" />
<antcall target="junitreport" />
</target>
<target name="clean">
<delete dir="${basedir}/dist" />
<delete dir="${basedir}/report" />
</target>
下面这个模板应该可以工作:
<target name="compile">
<antcall target="clean" />
<!-- javac and jar without test-->
</target>
<target name="compilewithtest">
<antcall target="clean" />
<!-- javac and jar with test-->
</target>
<target name="deploy">
<antcall target="compile" />
<antcall target="compilewithtest" />
</target>
<target name="clean">
<!-- Delete and create required directories -->
</target>
所以对于jar的每个compilation/building,执行"clean"。此外,我建议通过参数化 source/destination 文件夹的目标来为多个 jar 创建 compilation/jar 使用相同的目标。
基于以上输入的以下更改已解决问题。
<target name="compile" description="generate the distribution" depends="init">
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarname}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="compilewithtest" description="generate the distribution with test">
<antcall target="clean" />
<antcall target="init" />
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<javac srcdir="${test}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarnamewithtest}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="deploy">
<antcall target="clean" />
<antcall target="compile" />
<antcall target="compilewithtest" />
<antcall target="junitreport" />
</target>
<target name="clean">
<delete dir="${basedir}/dist/classes" />
<delete dir="${basedir}/report" />
</target>
我正在尝试构建两个 jar 文件 - 一个仅包含与应用程序相关的 classes,另一个包含测试用例。然而,生成的两个罐子同时具有 classes 和测试用例。
PFB 构建的片段 XML。
<target name="compile" description="generate the distribution" depends="init">
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarname}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="compilewithtest" description="generate the distribution with test" depends="init,compile">
<javac srcdir="${test}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarnamewithtest}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="deploy">
<antcall target="clean" />
<antcall target="compile" />
<antcall target="compilewithtest" />
<antcall target="junitreport" />
</target>
<target name="clean">
<delete dir="${basedir}/dist" />
<delete dir="${basedir}/report" />
</target>
是否无法从同一个 classes 目录生成两个 jar?我该如何解决这个问题?
编辑 -
如果 class 目录不同,它会起作用。是不是可以使用相同的目录。下面突出显示的部分是多余的。
<target name="compile" description="generate the distribution" depends="init">
**<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">**
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarname}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="compilewithtest" description="generate the distribution with test" depends="init,compile">
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/class">
<classpath refid="class.path" />
</javac>
**<javac srcdir="${test}" debug="${debug}" destdir="${basedir}/dist/class">**
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarnamewithtest}.jar" basedir="${basedir}/dist/class">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="deploy">
<antcall target="clean" />
<antcall target="compile" />
<antcall target="compilewithtest" />
<antcall target="junitreport" />
</target>
<target name="clean">
<delete dir="${basedir}/dist" />
<delete dir="${basedir}/report" />
</target>
下面这个模板应该可以工作:
<target name="compile">
<antcall target="clean" />
<!-- javac and jar without test-->
</target>
<target name="compilewithtest">
<antcall target="clean" />
<!-- javac and jar with test-->
</target>
<target name="deploy">
<antcall target="compile" />
<antcall target="compilewithtest" />
</target>
<target name="clean">
<!-- Delete and create required directories -->
</target>
所以对于jar的每个compilation/building,执行"clean"。此外,我建议通过参数化 source/destination 文件夹的目标来为多个 jar 创建 compilation/jar 使用相同的目标。
基于以上输入的以下更改已解决问题。
<target name="compile" description="generate the distribution" depends="init">
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarname}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="compilewithtest" description="generate the distribution with test">
<antcall target="clean" />
<antcall target="init" />
<javac srcdir="${src}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<javac srcdir="${test}" debug="${debug}" destdir="${basedir}/dist/classes">
<classpath refid="class.path" />
</javac>
<jar jarfile="${dist}/${jarnamewithtest}.jar" basedir="${basedir}/dist/classes">
<metainf dir="${src}/META-INF" includes="beans.xml" />
</jar>
</target>
<target name="deploy">
<antcall target="clean" />
<antcall target="compile" />
<antcall target="compilewithtest" />
<antcall target="junitreport" />
</target>
<target name="clean">
<delete dir="${basedir}/dist/classes" />
<delete dir="${basedir}/report" />
</target>