8

我的目标如下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 中的 Clean and Build 之后打开manifest.mf会显示我添加的所有额外属性。但是,当我打开我的 jar 文件时,我看到它只包含默认内容:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0-b147 (Oracle Corporation)

当我在一个项目中有两个包之前,我的这个工作正常。一个包是我要带到其他项目的所有库的东西,所以我决定把它分成另一个项目,这样我就可以自己构建库 jar。现在我有这个问题。它发生在我自己编译库以及依赖它的其他项目时。

4

7 回答 7

4

我已经通过打开nbproject/project.properties并添加manifest.file=manifest.mf到末尾来修复它。就那么简单。

于 2013-03-11T16:52:52.370 回答
3

在此处查看此答案:是否可以将自定义清单添加到在 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>
于 2014-09-12T10:17:25.317 回答
2

我碰巧在这里遇到了同样的问题,幸运的是已经解决了。不幸的是,我不知道究竟是什么导致了这个问题,在将你的代码与我的代码进行比较之后,我看到的唯一区别是你的 build.xml 中清单文件的名称,以及触发任务的事件(我使用了 pre init) . 我全部大写,并在 dist 目录 -post-jar 中创建的 Version.txt 文件中补充清单版本信息。您可能只想尝试制作

清单文件="manifest.mf"

清单文件="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>
于 2013-03-06T16:11:01.033 回答
1

您需要使用“更新模式”。

<manifest file="${manifest.file}" mode="update">

于 2013-03-08T16:28:33.390 回答
1

正如 Thihara 已经问过的,您可能有一个构建 jar 的任务?您在创建 jar(或类似的东西)标签/任务中有 manifest="MANIFEST.MF" 吗?

<target name="jar">
        <jar   manifest="path-to/MANIFEST.MF" basedir="base dir" destfile="outJarfileName">
        </jar>
    </target>
于 2013-03-11T16:36:09.653 回答
0

在创建罐子、战争、耳朵时,MANIFEST.MF 中的一个常见问题是

“清单版本:1.0 Ant 版本:Apache Ant 1.9.4 创建者:1.7.0_40-b43(甲骨文公司)”

如果您想忽略 Ant 版本号并使用 filesetmanifest="mergewithoutmain" 选项创建。

<jar destfile="MyJar.jar" basedir="./bin" filesetmanifest="mergewithoutmain"  manifest="./src/META-INF/MANIFEST.MF" update="true" >
于 2014-10-13T18:34:18.670 回答
0

Netbeans 7.3.X中 为build.xml 中的.war 使用

<manifest file="${build.web.dir}/META-INF/MANIFEST.MF">...</manifest>
于 2014-12-29T21:07:32.003 回答