another SO postによく記載されているように、良い理由からMavenにはpost-test
フェーズがありません(主にユニットテストはユニットテストです)。
しかし、あなたのケースでは、おそらく問題を解決するだけでなく、保守、テスト、共有という点で複雑なレイヤーを追加するMavenプラグインを別途作成する必要はありません。
質問に記載されているように、既にJavaメソッドに必要なコードがあるので、Exec Maven Pluginとそのjava
ゴールを使用する方が意味があります。あなたは、したがって、単にあなたのPOMに追加することができ
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<phase>test</phase> <!-- executed as post-test, that is, after Surefire default execution -->
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.sample.JsonFileAggregator</mainClass> <!-- your existing Java code, wrapped in a main -->
<arguments>
<argument>${project.build.directory}</argument> <!-- directory from where to load json files -->
</arguments>
<classpathScope>test</classpathScope> <!-- if your Java code is in test scope -->
</configuration>
</execution>
</executions>
</plugin>
test
相にその実行を結合、つまり、Mavenは(したがって、デフォルトのMavenシュア実行後)バインディング任意のデフォルト後として、それを実行しますpost-test
として実行されます。
既存のJavaコードは、細工された(まだ存在していない場合)Javaメインを介して呼び出すことができます。引数に渡すこともできます(.jsonファイルをロードする場所、上記スニペットのディレクトリのようにtarget
フォルダ例としてその標準的なプロパティ${project.build.directory}
を介して)。さらに、スニペットで説明したように、Javaコードはtest
スコープ(つまり、src/test/java
の下にあります)に配置されているため、それに合わせてclasspathScope
もコンフィグレーションする必要があります。
関連性が高いhttp://stackoverflow.com/q/35550818/1743880 – Tunaki
ユニットテスト後にどのようなポストプロセスを実行したいですか?そうであれば、彼らはお互いに独立していません...私に間違って聞こえる... – khmarbaise
@khmarbaise .jsonファイルの内容を1つのファイルにマージし、そのファイルからレポートを生成したいと思います。私はすでにこれを行うためにいくつかのJavaコードを持っています。それはそれを呼び出す最も適切な方法を考え出すことの問題です。リンクされた質問のTunakiの回答に基づいて、Mavenプラグインを作成してテストフェーズにバインドすることをお勧めします。 – rob