・特定のリソースファイルが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から外出しする方法があればご回答頂ければと思います。
よろしくお願い致します。
<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>
早速ご回答ありがとうございます。
2012/10/21 13:24:47> 特定のリソースファイルが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
ありがとうございました!
2012/10/21 15:53:47