如何通过Ant在特定位置将文件包含到Jar中

22

我有一个Ant的jar任务:

<target name="jar">
    <jar destfile="${generated.jars.dir}/hello-${environment}.jar">
        <fileset dir="${generated.classes.dir}"/>
        <fileset dir="${environment.dir}/${environment}" includes="config.xml"/>
    </jar>
</target>

我如何强制将config.xml文件推送到特定目录中的jar文件中,而不是在根级别上,比如/database/config.xml或类似的位置...

PS:这样做的原因是我可以拥有hello-local.jar、hello-dev.jar、hello-qa.jar等多个版本。

3个回答

29

使用像这样的 zipfileset

<jar destfile="${generated.jars.dir}/hello-${environment}.jar">
    <fileset dir="${generated.classes.dir}"/>
    <zipfileset dir="${environment.dir}/${environment}" 
                includes="config.xml"
                fullpath="database/config.xml"/>
</jar>

6

您需要使用zipfileset:

<zipfileset dir="${environment.dir}/${environment}" includes="config.xml" prefix="database"/>

或者:

<zipfileset dir="${environment.dir}/${environment}" includes="config.xml" fullpath="database/config.xml"/>

如果我理解正确的话,你的建议是在创建了 JAR 文件后通过 Zip 将配置文件压缩到其中? - Stephane Grenier
不需要,因为<jar>任务扩展了<zip>任务,所以它直接支持嵌套zipfileset和zipgroupfileset。 - carej

1
<!-- Generate EJBs -->
  <javadoc destdir="${ejb.build.dir}/src" classpathref="ejb.class.path" docletpath="${wl.home}/lib/ejbgen.jar" doclet="weblogic.tools.ejbgen.EJBGen" maxmemory="512m" docletpathref="class.path" failonerror="true" additionalparam="-descriptorDir ${ejb.build.dir}/src/META-INF -wls81 -forceGeneration">
   <fileset dir="${ejb.build.dir}/src" includes="**/ejb/*Bean.java,**/ejb/**/*Bean.java, **/ejb/enterprisemanagement/*EJB.java, **/ejb/sitemanagement/*EJB.java, kaas/gateways/rdm/**" excludes="**/agwmgmt/*.java,**/dstprofilemgmt/*.java, **/KaASBaseSessionBean.java,**/com/hns/iag/kaas/rdm/**">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接