Netbeans 7:为什么我的编辑清单没有包括在内?

时间:2013-03-03 18:38:38

标签: java netbeans ant manifest netbeans-7

我的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。现在我有这个问题。当我自己编译库以及依赖它的其他项目时,它都会发生。

7 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

在此处查看此答案:Is it possible to add a custom manifest to a Java library compiled in Netbeans 6.7.1?

我遇到了同样的问题,在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>

答案 2 :(得分:2)

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

manifest file =“manifest.mf”

阅读

manifest file =“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>

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

<target name="jar">
        <jar   manifest="path-to/MANIFEST.MF" basedir="base dir" destfile="outJarfileName">
        </jar>
    </target>

答案 5 :(得分:0)

在创建Jars,Wars,Ears时,MANIFEST.MF中的一个常见问题是

“清单 - 版本:1.0 Ant-Version:Apache Ant 1.9.4 创建者: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" >

答案 6 :(得分:0)

Netbeans 7.3.X 中 对于 .war 在build.xml中使用

<manifest file="${build.web.dir}/META-INF/MANIFEST.MF">...</manifest>