How do I include a jar file into a lib folder of a

2019-04-28 19:40发布

问题:

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>


标签: ant