ant - 在lib里面和在MANIFEST类路径中构建jar

时间:2017-03-21 11:11:23

标签: jar ant manifest ivy

我目前正在制作我的jar:

 <jar jarfile="${bin.dir}/${name}.jar" basedir="${build.src.dir}">
            <zipfileset src="${bin.lib.dir}/dependencies-compact.jar"
                        excludes="META-INF/*.SF" />
  </jar>

但这会让一切都在罐子里混乱。该计划现在位于jar内,将有一个名为lib的文件夹,MANIFEST.MF的classpath变量将使用lib文件夹中所有jar的列表进行更新。如何在蚂蚁上实现这一目标?

1 个答案:

答案 0 :(得分:0)

Manifest中的类路径指的是外部jar,而不是你在jar文件中提取的类。

以下是我如何使用ivy将jar的依赖项放入相邻的“lib”目录,然后使用ANT manifestclasspath任务构建进入jar清单的字符串的示例:

  <target name="build" depends="compile">
    <ivy:retrieve pattern="${dist.dir}/lib/[artifact].[ext]"/>

    <manifestclasspath property="jar.classpath" jarfile="${dist.jar}">
      <classpath>
        <fileset dir="${dist.dir}/lib" includes="*.jar"/>
      </classpath>
    </manifestclasspath>

    <jar destfile="${dist.jar}" basedir="${build.dir}/classes">
      <manifest>
        <attribute name="Main-Class" value="${dist.main.class}"/>
        <attribute name="Class-Path" value="${jar.classpath}"/>
      </manifest>
    </jar>
  </target>

有关包含常春藤文件和单元测试的更详细示例,请参阅: