web-dev-qa-db-ja.com

Netbeansマニフェスト

Netbeansによって生成されたjarのmanifest.mfファイルにエントリを追加することは可能ですか?

たとえば、osgiバンドルを構築します。

21
Maurice Perry

Antタスクを介してオンザフライでマニフェストを作成し、プロパティを動的に設定できることに注意してください。

まず、「nbproject」ディレクトリにあるNetbeansの「project.properties」ファイルを更新する必要があります。次の行をファイルに追加します。

manifest.file=manifest.mf

次に、「build.xml」ファイルを使用してマニフェストを作成/更新するantタスクを作成します。この例では、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タスクを作成するだけです(もちろん、jarを投稿します)。

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

興味深い情報はここにあるかもしれません:

http://wiki.netbeans.org/FaqNoMainClass

6

Javaカスタムマニフェストファイルを含むクラスライブラリプロジェクトがあります-OSGIバンドルに最適です。これを機能させるには、最初にproject.propertiesを編集して設定します。

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

プロジェクトディレクトリに独自のカスタムmanifest.mfファイルを作成します。

(この時点で、クリーン/ビルドを試行しても、カスタムマニフェストファイルは取得されません。NetBeansが独自のマニフェストファイルを提供します。これは、build-impl.xmlAntターゲット "-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>

NetBeans6.7.1でテスト済み

2
gazzamop

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: ( ..... )
1
Houtman

Maven(nbm-maven-plugin)を使用している場合は、これを見てください

NBM Mavenプラグイン

1
Lukino

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>
....

これにより、次のようなjarファイルにMANIFEST.MFが作成されます。

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

Netbeans8.1でテスト済み。

0
czdepski

私にとってうまくいったMavenプロジェクトを使ってみませんか?例えば。 Apache felix

私がnetbeansで作成した このプラグ可能なSwingの例 を参照してください。

0
Karussell