2016-04-07 7 views
1

maven-jar-pluginに指定されたmainClassが有効なクラスであり、それはさらにpublic static void main(String[] argv)メソッドを持つことを検証する方法がありますか(別のプラグインを使用しても)?maven-jar-pluginのmanifest.mainClassを検証します

リファクタリングした後、これが欠落することがよくあるので、これを避けて、verifyライフサイクルステージでチェックしてください。確かにマニフェストファイルに応じてそれを実行します

java -jar target\project.jar 

(したがって、実行するように構成mainメソッド)または失敗:

答えて

1

は、次のコマンドを実行するためにexec-maven-pluginとそのexec目標を使用することができます。あなたは、このように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
  • 上記のjavaコマンドを実行するようにexec-maven-pluginを設定します(注:ハードコードされた成果物の名前とパスを避けるための年齢属性の年齢)
  • 提案として、この実行に、あなたのメインメソッドが健全性チェックとして予期すべきさらなる引数を渡す、つまり-run like(単に情報をコンソールに出力するか、ただちに返す)
  • マニフェストの情報が正しい場合、実行は正常に実行されます。そうでない場合は(ビルドのように)失敗します。

    Error: Main method not found in class com.sample.Main, please define the main method as:
    public static void main(String[] args)

    :あなたが探していたものを

    [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] ------------------------------------------------------------------------ 
    

    注上記のメッセージはかなりある:


は、単純に次のメッセージでビルドを壊すmain2mainメソッドの名前を変更します

関連する問題