Java Ant覆盖自定义清单文件

Java Ant覆盖自定义清单文件,java,eclipse,ant,Java,Eclipse,Ant,我正在用Ant创建一个jar,它还使用一个自定义清单文件。build.xml文件正确地构建了所有内容。但是,当我检查jar中的清单文件时,我的属性不在那里。看起来它将被Ant构建的默认MANIFEST.MF文件替换。我的生成文件如下: <?xml version="1.0" ?> 构建.jar文件。 要指定自定义清单而不是默认的Ant manifest.MF文件,我需要做什么更改?我相信jar-Ant任务有一个manifest属性,您可以在其中指定要使用的实际文件。在本

我正在用Ant创建一个jar,它还使用一个自定义清单文件。build.xml文件正确地构建了所有内容。但是,当我检查jar中的清单文件时,我的属性不在那里。看起来它将被Ant构建的默认MANIFEST.MF文件替换。我的生成文件如下:

<?xml version="1.0" ?>


构建.jar文件。


要指定自定义清单而不是默认的Ant manifest.MF文件,我需要做什么更改?

我相信jar-Ant任务有一个manifest属性,您可以在其中指定要使用的实际文件。在本例中,您将引用使用清单任务创建的文件



在标记中添加更多属性应该会有所帮助。定义jar时,我缺少“manifest”属性。谢谢关键的一点是,您不能像其他文件一样将MANIFEST.MF文件放入jar中,它将被ant忽略。相反,您必须直接使用“manifest”属性或嵌套元素。
<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>
<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>