我有以下代码:
<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文件时重命名吗?
当然,在我问这个问题的那一刻,我找到了答案:
我不能<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>任务.