netbeans によって生成された jar の manifest.mf ファイルにエントリを追加することはできますか?
たとえば、osgi バンドルを構築します。
netbeans によって生成された jar の manifest.mf ファイルにエントリを追加することはできますか?
たとえば、osgi バンドルを構築します。
Note that you can create a manifest on-the-fly via an ant task and set properties dynamically.
First, you must update your Netbeans "project.properties" file found in the "nbproject" directory. Add the following line to the file:
manifest.file=manifest.mf
Next, create an ant task to create/update the manifest using the "build.xml" file. In this example, we will set the version number and date of the jar file.
<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>
This will create a manifest file in your netbeans project directory and stuff it into your jar file. If you want to delete the autogenerated manifest file from your netbeans project directory, simply create another ant task (post jar of course):
<target name="-post-jar">
<delete file="MANIFEST.MF"/>
</target>
興味深い情報がここにあるかもしれません:
OSGI バンドルに最適なカスタム マニフェスト ファイルを含む Java クラス ライブラリ プロジェクトがあります。これを機能させるには、まず project.properties を編集して設定します。
manifest.file=manifest.mf
manifest.available=true
プロジェクト ディレクトリに独自のカスタム manifest.mf ファイルを作成します。
(この時点で、クリーン/ビルドを試行しても、カスタム マニフェスト ファイルを取得できません。NetBeans が独自のマニフェスト ファイルを提供します。これは、build-impl.xml Ant ターゲット "-do-jar-with-libraries-without -manifest" は "-do-jar-with-manifest" の直後に呼び出され、カスタム マニフェスト 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 でテスト済み
build.xmlと同じディレクトリに、manifest.mfファイルを置くことができます
Netbeans 6.7.1を使用しています。build-imp.xml(Netbeansが使用する実際のビルドスクリプト)であることがわかりました。
したがって、project-properties、run、main-Classが-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: ( ..... )
Maven (nbm-maven-plugin) を使用している場合は、これを見てください
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 でテスト済み。
この記事を参照してください。
ここでは、その方法について説明します