问题
I have the following folder structure:
project.ear
lib folder
ProjectEJBClient.jar
META-INF folder
projectEJB.jar
My build.xml
contains the following lines to create EAR package
<ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
<fileset dir="${build.dir}" includes="ProjectEJBClient.jar"/>
<fileset dir="${build.dir}" includes="projectEJB.jar"/>
</ear>
The above code can't create an EAR package with lib folder which includes the ProjectEJBClient.jar
file
I want to create a lib folder and copy ProjectEJBClient.jar
into that lib folder.
After this process I want to make an EAR project with this lib folder.
I don't know how to create lib folder and copy ProjectEJBClient.jar
into that folder and include this folder into project.ear.
回答1:
Use a zipfileset:
<ear destfile="${build.dir}/myapp.ear" appxml="${src.dir}/metadata/application.xml">
<zipfileset dir="." prefix="lib">
<include name="ProjectEJBClient.jar"/>
</zipfileset>
<fileset dir="${build.dir}" includes="projectEJB.jar"/>
</ear>
The prefix="lib"
will make sure, that the jar will be under /lib
in your ear.
回答2:
In my case it didnt work, becouse I needed to include several files, and I solved using zipfileset in a different way, under apache-ant-1.9.1and jdk1.7.0_60:
<ear earfile="${dst_dir}/${ear_file}" appxml="${dep_dir}/ear/application.xml">
<zipfileset
dir="${m2.home}/commons-codec/commons-codec/1.9"
prefix="lib"
includes="**/*.jar"/>
<zipfileset
dir="${m2.home}/log4j/log4j/1.2.17"
prefix="lib"
includes="**/*.jar"/>
<fileset dir="${dst_dir}" includes="${jar_file}"/>
<fileset dir="${dst_dir}" includes="${war_file}"/>
</ear>
来源:https://stackoverflow.com/questions/10072835/how-do-i-include-a-jar-file-into-a-lib-folder-of-an-ear-file-using-ant