Ant提取类进入Jar

时间:2011-05-17 07:03:57

标签: java ant

  

可能重复:
  Clean way to combine multiple jars? Preferably using Ant

当我从eclipse导出一个jar文件时,我得到的一个选项是将类文件从依赖jar中提取到我的最后一个jar中(其他选项包括将jar包装到我的最后一个jar中或者只是将所有内容放在我的最后一个罐子)。当然有关于许可问题的警告。

所以这就是问题 - apache ant中的等价物是什么?如何从我的程序所依赖的jar中创建ant提取类并将它们重新打包到我的最终jar中?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<?xml version="1.0"?>
<project name="blah" basedir="." default="jar">
<target name="init">
  <property name="build" value="./build" />
  <property name="srcdir" value="./src" />
  <property name="lib.dir" value="./lib" />
  <property name="dist" value="./dist" />
  <property name="docs" value="./docs" />
  <property name="debug" value="true" />
  <path id="project.class.path">
    <pathelement path="${java.class.path}" />
    <fileset dir="${lib.dir}">
      <include name="*.jar" />
    </fileset>
  </path>
</target>
 <target name="compile" depends="init">
   <mkdir dir="${build}" />
   <javac debug="${debug}"
          optimize="${optimize}"
          destdir="${build}"
          deprecation="${deprecation}"
          source="1.6" target="1.6">
     <src path="${srcdir}" />
     <classpath refid="project.class.path" />
   </javac>
 </target>
 <target name="jar" depends="compile">
   <mkdir dir="${dist}" />
   <jar destfile="${dist}/${ant.project.name}.jar">
     <fileset dir="${build}">
       <include name="com/blah/blah/*.class" />
     </fileset>
   </jar>
 </target>
<target name="package" depends="compile, jar">
  <jar destfile="${dist}/${ant.project.name}-release.jar" basedir="${build}" includes="**/*.*">
    <manifest>
       <attribute name="Main-Class" value="com.blah.blah.Main" />
    </manifest>
    <zipgroupfileset dir="${lib.dir}" includes="*.jar" />
    <zipgroupfileset dir="${dist}" includes="${ant.project.name}.jar" />
  </jar>
</target>
</project>

然后你会去:

ant package

生成包含 lib 文件夹中所有类的单个jar文件。