我正在创建一个带有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>
解决方法
我相信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>