mainClass
指定されたmaven-jar-plugin
が有効なクラスであることを (別のプラグインを使用しても) 検証する方法はありpublic static void main(String[] argv)
ますか?
verify
これはリファクタリング後に見落とされることがよくあることであり、これを避けてライフサイクルの段階で確認したいと考えています。
mainClass
指定されたmaven-jar-plugin
が有効なクラスであることを (別のプラグインを使用しても) 検証する方法はありpublic static void main(String[] argv)
ますか?
verify
これはリファクタリング後に見落とされることがよくあることであり、これを避けてライフサイクルの段階で確認したいと考えています。
exec-maven-plugin
とその目標を使用してexec
、次のコマンドを実行できます。
java -jar target\project.jar
マニフェストファイルに従って実際に実行するか(したがって、構成されたメインメソッドを実行する)、または失敗します。
verify
したがって、次の (サンプル) 構成をフェーズに追加できます。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>com.sample.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<id>check-main</id>
<phase>verify</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>${project.build.directory}/${project.build.finalName}.jar</argument>
<argument>sanityCheck</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
上記のスニペットでは、次のようになります。
maven-jar-plugin
マニフェストでメイン クラスを構成するための の構成 (com.sample.Main
この場合のサンプル)exec-maven-plugin
最終アーティファクトで上記のコマンドを実行するように構成しjava
ます (ハードコーディングされたアーティファクト名とパスを避けるために、Maven プロパティの使用に注意してください)。main
メソッドの名前を単純に に変更main2
すると、ビルドが中断され、次のメッセージが表示されます。
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ simple ---
[INFO] Building jar: C:\Development\workspace-mars\simple\target\simple-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- exec-maven-plugin:1.4.0:exec (check-main) @ simple ---
Error: Main method not found in class com.sample.Main, please define the main method as:
public static void main(String[] args)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
上記のメッセージは、あなたが探していたものとほぼ同じであることに注意してください。
エラー: クラス com.sample.Main にメイン メソッドが見つかりません。メイン メソッドを次のように定義してください:
public static void main(String[] args)