Netbeans的清单(Netbeans manifest)

2019-06-28 04:32发布

是否有可能将条目添加到由NetBeans的产生罐子的MANIFEST.MF文件?

打造比如一个OSGi包。

Answer 1:

请注意,您可以创建一个清单通过Ant任务动态上即时和设置属性。

首先,你必须更新“nbproject文件”目录中找到你的Netbeans的“project.properties”文件。 以下行添加到文件:

manifest.file=manifest.mf

接下来,创建一个Ant任务创建/更新使用“的build.xml”文件清单。 在这个例子中,我们将设置jar文件的版本号和日期。

<target name="-pre-init">
   <property name="project.name" value="My Library" />
   <property name="version.num" value="1.4.1" />
   <tstamp>
      <format property="NOW" pattern="yyyy-MM-dd HH:mm:ss z" />
   </tstamp>

   <!--
   <exec outputproperty="svna.version" executable="svnversion">
       <arg value="-c" />
       <redirector>
           <outputfilterchain>
               <tokenfilter>
                   <replaceregex pattern="^[0-9]*:?" replace="" flags="g"/>
                   <replaceregex pattern="M" replace="" flags="g"/>
               </tokenfilter>
           </outputfilterchain>
       </redirector>
   </exec>
   -->


   <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}" />
      <attribute name="Implementation-URL" value="http://www.example.com" />
   </manifest>

</target>

这会在你的NetBeans项目目录清单文件和东西到你的jar文件。 如果你想从你的NetBeans项目目录中删除自动生成清单文件,只需创建另一个Ant任务(当然后罐子):

<target name="-post-jar">
  <delete file="MANIFEST.MF"/>
</target> 


Answer 2:

有趣的信息可能是在这里:

http://wiki.netbeans.org/FaqNoMainClass



Answer 3:

我有一个自定义的清单文件的Java类库项目 - 完美的一个OSGi包。 为了得到这个工作的第一编辑project.properties并设置:

manifest.file=manifest.mf
manifest.available=true

创建项目目录自己定制的MANIFEST.MF文件。

(此时,如果你尝试清洁/建造你仍然不会得到您的自定义清单文件 - NetBeans将提供自己这是因为build-impl.xml中Ant目标“待办事宜-JAR-用的库,而无需-manifest -DO-JAR-与舱单‘”正在后立即被称为’,覆盖您的自定义清单JAR文件用默认的NetBeans清单JAR)。

一个自定义的目标添加到build.xml文件,如下所示:

<target name="-do-jar-with-libraries-without-manifest">
    <!-- Inserted to prevent target from running so we can have a custom
         manifest file with a class library project type. -->
</target>

经测试在NetBeans 6.7.1



Answer 4:

在同一目录的build.xml文件,你可以把你的MANIFEST.MF文件

我使用NetBeans 6.7.1原来,集结imp.xml(实际构建脚本NetBeans使用)

  • 没有它运行的目标,如果“有明显的,没有主阶级”
  • 但它确实有一个像“与舱单,与主级”

所以..请确保您有该项目的性质,运行,主级充满-anything-

我认为这是一些无证功能:(

这是我的清单内容:

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Bundle-ManifestVersion: 2
Bundle-Name: jinstall
Bundle-SymbolicName: jinstall
Import-Package: ( .... )
Export-Package: ( .... )
Bundle-Activator: ( ..... )


Answer 5:

如果你使用maven(NBM-Maven的插件),看看这个

NBM Maven插件



Answer 6:

为什么不使用Maven项目,这对我的工作呢? 例如, Apache的菲利克斯

见这个可插拔的Swing例子 ,我在NetBeans中创建的。



Answer 7:

您可以编辑nbproject/build-impl.xml加入这样的必要的属性:

....
<target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
    <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
        <attribute name="Main-Class" value="${main.class}"/>
        <attribute name="Property1" value="foo"/>
        <attribute name="Property2" value="bar"/>
    </manifest>
</target>
....

这将导致一个MANIFEST.MF在这样的jar文件:

Manifest-Version: 1.0
...
Property1: foo
Property2: bar

经测试的NetBeans 8.1。



Answer 8:

请参阅这篇文章

这说明如何

  • 创建自己的Ant目标
  • 手工添加条目MANIFEST.MF的输出JAR
  • 从运行Netbeans的定制Ant目标


文章来源: Netbeans manifest