Ant在jar任务中使用Fileset并重命名文件

时间:2013-06-24 14:45:52

标签: ant jar

我有以下代码:

<jar destfile="${jar.file}">
     <fileset dir="${basedir}/resources"/>
        <include name="META-INF/ejb-jar.xml"/>
        <include name="META-INF/persistence-prod.xml"/>
     </fileset>
     [...]
</jar>

问题是persistence-prod.xm1放在jar中时应该是persistence.xml

我知道我可以创建一个工作目录并在那里布置我的整个jar,然后将其打包。我知道我可以将其中一个文件复制到其他地方并在复制时重命名。如果我要将一大堆名为*-prod.xml的文件重命名为*.xml,我可以在复制任务中使用file mapper。但是,我希望能够在<jar>任务中重命名该文件。我尝试将<globmapper>添加到jar任务中,但收到了错误消息:jar doesn't support the nested "globmapper" element.

知道如何在对文件进行评级时进行重命名吗?

1 个答案:

答案 0 :(得分:6)

当然,在我问这个问题的那一刻,我找到了答案:

我无法将<globmapper>直接放入<jar>任务,但我可以将<mappedresources>添加到<jar>任务中,并将<globmapper>放入<jar destfile="${jar.file}"> <fileset dir="${basedir}/resources"/> <include name="META-INF/ejb-jar.xml"/> <include name="META-INF/persistence-prod.xml"/> </fileset> <globmapper from="*-prod.xml" to="*.xml"/> [...] </jar> 有:

错误:

<jar destfile="${jar.file}">
    <fileset dir="${basedir}/resources"/>
         <include name="META-INF/ejb-jar.xml"/>
    </fileset>
    <mappedresources>
        <fileset dir="${basedir}/resources">
            <include name="META-INF/persistence-prod.xml"/>
        </fileset>
        <globmapper from="*-prod.xml" to="*.xml"/>
    </mappedresources>
    [...]
</jar>

右:

<mappedresources>

我想这是有道理的,因为它将我的文件映射限制为<fileset>,而不是<jar>任务的所有{{1}}。