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

Dav*_* W. 8 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>
Run Code Online (Sandbox Code Playgroud)

问题是persistence-prod.xm1应该persistence.xml放在罐子里.

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

知道如何在jaring文件时重命名吗?

Dav*_* W. 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>
Run Code Online (Sandbox Code Playgroud)

对:

<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>
Run Code Online (Sandbox Code Playgroud)

我想这是有道理的,因为它限制了我的文件映射到刚<mappedresources>而不是所有<fileset>的的<jar>任务.