运维开发网

如何抓住蚂蚁的flattenmapper结果?

运维开发网 https://www.qedev.com 2020-05-09 07:50 出处:网络 作者:运维开发网整理
请从我的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\ea
请从我的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放在子目录中).

0

精彩评论

暂无评论...
验证码 换一张
取 消