我正在使用Ant创建一个jar,它也使用自定义清单文件。 build.xml文件正确构建所有内容。但是,当我检查jar中的清单文件时,我的属性不存在。看起来它被替换为Ant构建的默认MANIFEST.MF文件。我的构建文件如下:
<?xml version="1.0" ?>
<property name="src" location="src" />
<property name="build" location="build" />
<property name="dist" location="dist" />
<target name="clean">
<delete dir="${build}" />
<delete dir="${dist}" />
</target>
<target name="main" depends="compile, dist, build">
<echo>
Building the .jar file.
</echo>
</target>
<target name="build">
<mkdir dir="${build}" />
<mkdir dir="${build}/META-INF" />
</target>
<target name="compile" depends="build">
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile">
<mkdir dir="${dist}/lib" />
<manifest file="${build}/META-INF/MANIFEST.MF">
<attribute name="Class-Path" value="MyGame.jar" />
<attribute name="Main-Class" value="game.Game"/>
</manifest>
<jar jarfile="${dist}/lib/MyGame.jar" basedir="${build}" />
</target>
如何更改以指定自定义清单而不是默认的Ant MANIFEST.MF文件?
答案 0 :(得分:9)
我相信jar ant任务有一个manifest属性,您可以在其中指定要使用的实际文件。在这种情况下,您将使用清单任务
引用您创建的文件http://ant.apache.org/manual/Tasks/jar.html
<target name="dist" depends="compile">
<mkdir dir="${dist}/lib" />
<manifest file="${build}/META-INF/MANIFEST.MF">
<attribute name="Class-Path" value="MyGame.jar" />
<attribute name="Main-Class" value="game.Game"/>
</manifest>
<jar manifest="${build}/META-INF/MANIFEST.MF" jarfile="${dist}/lib/MyGame.jar" basedir="${build}" />
</target>