FaqSpecialJarJa
私のプロジェクトの JAR ファイルに入るものはどのようにすればカスタマイズできますか?
既定では、通常の Java プロジェクトは構築される際に以下のものだけを含む JAR を作成します。
- ソースパッケージ のすべてのコンパイルされたクラス。
- ソースパッケージ のその他すべてのリソースファイル。より厳密に言えば、プロジェクトカスタマイザの パッケージング パネルの JAR ファイルから除外 フィールドに列挙されていないものすべて。
- マニフェスト、もしあるなら (既定ではアプリケーションプロジェクトのみ)。
通常、もし追加のリソースを JAR に入れたいのであれば、単に ソースパッケージ にそれらを入れるといいでしょう。(NetBeans 4.1 ではプロジェクトに追加のソースパッケージフォルダを加えることができます、たとえばリソースを分離したファイルツリーで保持したい場合。これらのクラスやリソースは Java パッケージ構造に従って同じ JAR にまとめられます。)
ソースパッケージ 内に置きたくない何らかの理由があって追加のファイルを含めたい場合、通常含められるファイルを除外したい場合、ファイルを移動したい場合や、その他いろいろあるでしょう。これらはすべて build.xml に特別な Ant ターゲットを作成することで可能になります。例として、JAR ファイルに新機能の一覧を入れたいけど、機能一覧を XSLT を使って生成したい場合を考えてみましょう。主プロジェクトフォルダ (ファイル タブの下に見えます) 内に whatsnew.xml ファイルを作成しましょう。
<?xml version="1.0" encoding="UTF-8"?>
<whatsnew>
<item>
New feature #1
</item>
<item>
New feature #2, <em>really cool</em>
</item>
</whatsnew>
ここで、スタイルシートが必要になります:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>What's New</title>
</head>
<body>
<h1>What's New in My Application?</h1>
<ol>
<xsl:for-each select="//item">
<li>
<xsl:copy-of select="node()"/>
</li>
</xsl:for-each>
</ol>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
最後に、JAR 内に HTML エントリを作成しましょう。build.xml に次のように追加します:
<target name="-pre-jar">
<xslt in="whatsnew.xml" out="${build.classes.dir}/whatsnew.html" style="whatsnew.xsl"/>
</target>
ここでプロジェクトを構築すると、JAR ファイルは最上位レベルで whatsnew.html を含みます。
別の例として、パッケージ framework (とサブパッケージ) 内にライブラリと、パッケージ examples (とサブパッケージ) 内にいくつかのサンプルを含むソールツリーがある場合を考えてみましょう。通常は、これを二つのプロジェクトとして作りますが (examples プロジェクトが framework プロジェクトに依存します)、特別な構築論理は必要ありませんし、framework のコードが誤って examples を参照することも防げます。しかし、何らかの理由でこれを一つのプロジェクトにしたくて、全部を一つのソースツリーに入れたいとしてみましょう。build.xml に入れるだけです。
<target name="-init-presetdef-jar" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1">
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
<jar jarfile="${dist.jar}" compress="${jar.compress}">
<j2seproject1:fileset dir="${build.classes.dir}">
<exclude name="examples/"/>
</j2seproject1:fileset>
</jar>
</presetdef>
</target>
ここで、Shift-F6 で examples を実行できますし、プロジェクトを構築は examples すべてをコンパイルします。しかしプロジェクトの JAR は framework だけを含み、examples は入りません。
バージョン: NetBeans 4.0, 4.1, 5.0
---
- 英文 (翻訳したバージョン: 3)
- 日本語 NetBeans ユーザー FAQ へ戻る
