6

私はこれでぐるぐる回っているように感じるので、うまくいけば、それは比較的簡単に解決できるものです.

私が開発しているアプリケーションには、構成情報を含む一連の XML ファイルが必要です。そして、jar ファイルを再コンパイルせずにこれらを編集できるようにしたいと考えています。だから私が望むのは、それらをjarファイルと同じフォルダー内のresourcesというフォルダーに入れることです。だから私の意図した構造は次のようなものです

root
|
- app.jar
|
- resources
  |
  - config
    |
    - config1.xml
    - config2.xml

copy-resources.xml内を使用してリソースをターゲット フォルダーにコピーするように pom.xml を調整することができましたmaven-resource-plugin

また、リソース ディレクトリをリソースとして追加しました (Eclipse 内で動作するように)。

<resources>
    <resource>
        <directory>resources</directory>
    </resource>
</resources>

を使用してアクセスできるように

getClass().getResource("/config/xml/config1.xml");

そして、maven-jar-plugin の manifestEntries を使用して、jar のマニフェストのクラスパスに私のリソース ディレクトリを含めました (私が思うに)。

<manifestEntries>
    <Class-Path>. resources</Class-Path&>
</manifestEntries>

そして、私のリソースがjarファイルにコンパイルされないようにしようとしました

<configuration>
    <exclude>resources/**/*.xml</exclude>
</configuration>

それらはまだjarファイルにコンパイルされています。また、それらを jar ファイルから手動で削除すると、リソースにアクセスしようとするとヌル ポインター例外が発生します。

だから私が達成しようとしていて、理解するのに助けが必要なのは、jarファイルにコンパイルされていないが、コードによって(クラスパスを介して)アクセスできる外部リソースについて、上で大まかに概説した構造を取得する方法です同じルート ディレクトリの jar 内で、Eclipse でも機能します。

ヘルプやガイダンスをいただければ幸いです。

4

2 に答える 2

0

あなたはタグを逃したexcludes

<configuration>
    <excludes>
       <exclude>resources/**/*.xml</exclude>
    </excludes>
</configuration>
于 2013-10-07T19:40:45.240 に答える