テストが実行される前に、依存jarファイルのルートから現在のプロジェクトの出力ディレクトリのルートにリソースファイル(menu.xml)をコピーする必要がありますビルド中に。このファイルは、テストのために利用可能でなければならないが、後でメインプログラムのために...getClassLoader().getResourceAsStream("menu.xml")
を使用して利用可能でなければならない。maven:依存jarからターゲットフォルダにリソースをコピーする
私は解決策をthis questionで提案しようとしていますが、機能しません。
これはPOMファイルがどのように見えるかです:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>resource-dependencies</id>
<phase>process-test-resources</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<type>jar</type>
<includeArtifactIds>pm1j-jar</includeArtifactIds>
<includes>menu.xml</includes>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
私はmvn clean process-test-resources
を実行すると、私は次の出力を参照してください。
[INFO] --- maven-resources-plugin:2.7:testResources (default-testResources) @ pm1-config ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-dependency-plugin:2.8:unpack-dependencies (resource-dependencies) @ pm1-config ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.709 s
[INFO] Finished at: 2016-05-05T15:01:06-03:00
[INFO] Final Memory: 30M/458M
[INFO] ------------------------------------------------------------------------
ファイルmenu.xmlがターゲットフォルダにコピーされていません。おそらく何が間違っているのかを私はどのように見ることができます私はデバッグログレベルでmavenを実行しようとしましたが、設定が正しく解析されているのがわかりましたが、プラグインは何が起こっているのかの追加情報を記録しません。
...
[DEBUG] (f) includeArtifactIds = pm1j-jar
[DEBUG] (s) includes = menu.xml
...
[DEBUG] (f) outputAbsoluteArtifactFilename = false
[DEBUG] (s) outputDirectory = c:\Dev\workspaces\config\pm1j\pm1-config\target\classes
...
[DEBUG] (f) project = MavenProject: com.expersoft.pm1j:pm1-config:3-SNAPSHOT @ c:\Dev\workspaces\config\pm1j\pm1-config\
pom.xml
[DEBUG] -- end configuration --
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.014 s
[INFO] Finished at: 2016-05-05T15:09:29-03:00
[INFO] Final Memory: 27M/328M
[INFO] ------------------------------------------------------------------------
は、依存するjarファイルのルートに直接あるmenu.xmlですか?依存関係リストにそのjarファイルがありますか? ** https://maven.apache.org/plugins/maven-dependency-plugin/unpack-dependencies-mojo.html#includesのドキュメントで**/menu.xmlのようなものを試したことがありますか?ファイルを読み込むととにかくクラスパスから、まったく解凍してしまいますか? – wemu
なぜそれをする必要がありますか?あなたはそれをする必要はありません。リソースがクラスパス内のJARのルートにある場合は、クラスパスのルートにあります。したがって、あなたが望むものは、まったく役に立たないものです。したがって、あなたは何をしたいのですか?あなたが解決したい本当の問題は何ですか? – Tunaki
はい、ファイルは依存するjarのルートにあります。私は今問題を理解しました。jarファイルは依存関係リストにありません。混乱は私が最初にリポジトリからjarをダウンロードするプラグインの** unpack **の目標を試したのでうまくいきました。うまくいきました。しかし、このケースでは、それは後のライフサイクル段階で起こるため、テスト用にファイルを使用することはできません。私は、以前の解決策に戻るべきだと思います。これは、他のプロジェクトのソースフォルダからmaven-resources-pluginを使ってファイルをコピーしていました。 – Alex