我在build.xml
中有以下目标:
<target name="-pre-compile">
<property file="build.properties"/>
<buildnumber file="build.version"/>
<tstamp>
<format property="timestamp" pattern="yyyy-MM-dd HH:mm:ss"/>
</tstamp>
<manifest file="manifest.mf">
<attribute name="MAJOR" value="${version.major}"/>
<attribute name="MINOR" value="${version.minor}"/>
<attribute name="RELEASE" value="${release}"/>
<attribute name="BUILD" value="${build.number}"/>
<attribute name="BUILD-DATE" value="${timestamp}"/>
<attribute name="PROTOCOL" value="${protocol}"/>
<attribute name="APPCODE" value="${appcode}"/>
</manifest>
</target>
它工作得很好,在Netbeans内清洁和构建后打开manifest.mf
显示我添加的所有额外属性。但是,当我打开jar文件时,我看到它只包含默认的内容:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0-b147 (Oracle Corporation)
当我在一个项目中有两个包时,这个工作得很好。一个包是所有我要带到其他项目的库的东西,所以我决定把它分成另一个项目,这样我就可以自己构建库jar。现在我有了这个问题。当我单独编译库以及其他依赖于它的项目时,都会发生这种情况。
我已经通过打开nbproject/project.properties
并将manifest.file=manifest.mf
添加到末尾来修复它。就这么简单。
在这里检查这个答案:是否有可能在Netbeans 6.7.1中编译的Java库中添加自定义清单?
我有你同样的问题,在我的build.xml的末尾添加这个解决了这个问题:
<target name="-post-jar">
<jar destfile="${dist.jar}" update="true">
<manifest>
<attribute name="Manifest-Version" value="1.0" />
<attribute name="Extension-Name" value="polpol" />
<attribute name="Class-Manager" value="org.nlogo.extensions.polpol.Manager" />
<attribute name="NetLogo-Extension-API-Version" value="5.0" />
</manifest>
</jar>
</target>
我碰巧遇到了你在这里遇到的同样的问题,幸运的是已经解决了它。不幸的是,我不知道究竟是什么导致了这个问题,并比较你的代码与我的,我看到真正的唯一区别是在你的build.xml清单文件的名称,以及触发任务的事件(我使用预init)。我有所有的大写字母,并补充在版本.txt文件,这是在dist目录-post-jar中创建的清单版本信息。你可能只想让
清单文件= " manifest . mf "
读清单文件= "清单。曼氏金融"
这是我的build.xml的重要部分的副本:
<property name="project.name" value="VOXManagement" />
<property name="version.num" value="1.1" />
<target name="-pre-init">
<tstamp>
<format property="NOW" pattern="yyyy-MM-dd HH:mm:ss z" />
</tstamp>
<manifest file="MANIFEST.MF">
<attribute name="Bundle-Name" value="${project.name}" />
<attribute name="Bundle-Version" value="${version.num}" />
<attribute name="Bundle-Date" value="${NOW}" />
<!--<attribute name="Bundle-Revision" value="${svna.version}" />-->
<attribute name="Implementation-Title" value="${project.name}" />
<attribute name="Implementation-Version" value="${version.num}" />
</manifest>
<echo file="Version.txt">V${version.num}</echo>
</target>
<target name="-post-jar">
<copy file="Version.txt" todir="dist" overwrite="true"/>
<delete file="dist/README.TXT"/>
</target>
你需要使用"update mode"
<manifest file="${manifest.file}" mode="update">
正如Thihara已经问过的,您可能有一个构建jar的任务?manifest=" manifest "。在您的创建jar(或类似的东西)标签/任务中?
<target name="jar">
<jar manifest="path-to/MANIFEST.MF" basedir="base dir" destfile="outJarfileName">
</jar>
</target>
创建jar,Wars,Ears是MANIFEST中的常见问题。MF是
"Manifest-Version: 1.0Ant版本:Apache Ant 1.9.4create - by: 1.7.0_40-b43 (Oracle Corporation)"
如果你想忽略Ant-Version Number,使用filesetmanifest="mergewithoutmain"选项。
<jar destfile="MyJar.jar" basedir="./bin" filesetmanifest="mergewithoutmain" manifest="./src/META-INF/MANIFEST.MF" update="true" >
在 Netbeans 7.3.X 对 . war 在build.xml中使用
<manifest file="${build.web.dir}/META-INF/MANIFEST.MF">...</manifest>