请从我的ant文件中找到以下几个目标:
<fileset id="test-dep-jars" dir="o:/java"> <include name="junit-4.10.jar"/> <include name="easymock-3.1\easymock-3.1.jar"/> <include name="easymockclassextension-3.1\easymockclassextension-3.1.jar"/> </fileset> <target name="copy-test-deps"> <mkdir dir="${deploy.dir}"/> <copy todir="${deploy.dir}"> <fileset refid="test-dep-jars"/> <flattenmapper/> </copy> </target> <target name="jar" depends="copy-test-deps"> <jar destfile="${deploy.dir}/test-${ant.project.name}.jar" basedir="${test.classes.dir}" includes="**/*.class" filesetmanifest="skip"> <manifest> <attribute name="Class-Path" value="${ant.project.name}.jar junit-4.10.jar easymock-3.1.jar easymockclassextension-3.1.jar"/> </manifest> </jar> </target>
我的问题是我必须说两次测试依赖项jar – 一次是在定义test-dep-jars文件集时,第二次是在指定生成的jar的Class-Path manifest属性时.
如果我只能抓住flattenmapper结果,那么我就可以在Class-Path中使用它了.
如何掌握flattenmapper结果?
谢谢.
我建议使用 manifestclasspath任务:<manifestclasspath property="jar.classpath" jarfile="${jar.file}"> <classpath> <fileset dir="${deploy.dir}" includes="*.jar"/> </classpath> </manifestclasspath> <jar destfile="${jar.file}" basedir="${classes.dir}"> <manifest> <attribute name="Main-Class" value="${jar.main.class}" /> <attribute name="Class-Path" value="${jar.classpath}" /> </manifest> </jar>
它将生成正确的类路径属性定义,甚至可以使用相对路径(例如,如果您将依赖的jar放在子目录中).
精彩评论