人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

mavenでjarを作成する際に、下記のようなカスタマイズを行うことは可能でしょうか?
・特定のリソースファイルがjar内に含まれないようにする。
・MANIFEST.MFファイルの記述に任意のクラスパスを含める。

[背景]
s2jdbcを利用しているmavenプロジェクトからjarを作成します。
その際DB接続設定を持つjdbc.diconをjarの外に出したいと考えています。
※プロジェクトにおいては「src/main/resources」配下に各種diconファイル(jdbc.dicon含む)を配置しています。

jdbc.diconはクラスパスの通っているディレクトリに配置すれば参照されるらしいので、下記が達成されればそれが可能になると考えました。
・jarファイル内にjdbc.diconが出力されないようにする
・MANIFEST.MFのクラスパスに、jarからの相対パス(「conf/」など)でjdbc.diconを配置するフォルダへのパスを追加する

この方針以外であっても、今回のような状況下でjdbc.diconをjarから外出しする方法があればご回答頂ければと思います。
よろしくお願い致します。

●質問者: コバツキー
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

<excludes> を使います。
http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html
http://maven.apache.org/pom.html#Resources

例えば、こんな感じ。

<project>
 <build>
 ...
 <resources>
 <resource>
 <directory>【対象のディレクトリ】</directory>
 <includes>
 <include>*</include>
 </includes>
 <excludes> <!-- ★ここ! -->
 <exclude>**/jdbc.dicon</exclude>
 </excludes>
 </resource>
 </resources>
 </build>
</project>

jdbc.dicon を配置している場所がはっきりしているなら、** じゃなくて、きちっと指定した方が良いと思います。


クラスパスは、<archive> の <manifest> で指定することになります。
本家のドキュメント よりも、こちらの方が分かりやすいかも。
http://d.hatena.ne.jp/clash_m45/20120616/1339871432

「依存関係」については、本家の方で。
http://maven.apache.org/pom.html#Dependencies

こんな感じになるのかな...

 <dependencies>
 <dependency>
 ...
 <artifactId>jdbc</artifactId>
 <type>dicon</type>
 ...
 </dependency>
 </dependencies>

コバツキーさんのコメント
早速ご回答ありがとうございます。 > 特定のリソースファイルがjar内に含まれないようにする。 こちらはこれで解決しました! > MANIFEST.MFファイルの記述に任意のクラスパスを含める。 こちらについては引き続き解答を募集します。 よろしくお願い致します!

コバツキーさんのコメント
>a-kuma3さん すみません!後半の記述(クラスパスは?)を見落としていました・・・。 記述内容を確認したのですが、依存関係はmavenリポジトリに登録されているコンポーネントを取り込むために指定するものだと思うので、今回のように単に「クラスパスに外部ディレクトリ(外部設定ファイル)へのパスを追加したい」というので指定するものではないと思います。 (maven経験浅いので、間違っているかもしれませんが。。) しかしご紹介頂いたサイトを確認する中で、今回自分が実現したいことは<manifest>タグ内ではできなさそうだということ、及び、<manifestEntries>タグを併用すれば実現できそうだということがわかりました。 それで下記のサイトに行き当たり、クラスパスについても解決しました。 http://stackoverflow.com/questions/1510071/maven-how-can-i-add-an-arbitrary-classpath-entry-to-a-jar >> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addClasspath>true</addClasspath> <mainClass>your.main.Class</mainClass> </manifest> <manifestEntries> <Class-Path>../conf/</Class-Path> </manifestEntries> </archive> << ありがとうございました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ