2016-04-07 20 views
1

maven-jar-plugin için belirtilen mainClass geçerli bir sınıf olduğunu ve hatta daha iyi bir public static void main(String[] argv) yöntemine sahip olduğunu doğrulamak için (başka bir eklenti kullanarak bile) doğrulamak için bir yolu var mı?maven-jar-plugin dosyasında manifest.mainClass

Refactoring sonrası, kaçırılan tek şey budur ve bundan kaçınmak ve verify yaşam döngüsü aşamasında kontrol etmek istiyorum. Gerçekten tezahür dosyaya göre çalıştırmak istiyorum

java -jar target\project.jar 

(dolayısıyla yürütme yapılandırılan ana yöntemi) veya başarısız:

cevap

1

aşağıdaki komutu çalıştırmak için exec-maven-plugin ve exec gol kullanabilirsiniz.

Böylece verify faza aşağıdaki (örnek) yapılandırması ekleyebilirsiniz: biz yukarıda snippet'inde

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

şunlardır:

  • onun manifest'te ana sınıf yapılandırmak için maven-jar-plugin Yapılandırılması (bu örnekte bir örnek com.sample.Main)
  • Son artifakta yukarıdaki java komutunu çalıştırmak için exec-maven-plugin'u yapılandırın (bize not edin sabit kodlanmış yapay isimler ve yollardan kaçınmak için maven özelliklerinin yaşı, önerilir)
  • Bir öneri olarak, bu yönteme, ana yönteminizin akıl kontrolü olarak öngörmesi gereken başka bir argümana da, yani kuru için - -run gibi (sadece konsola bir bilgi yazdırın veya hemen geri dönün)
  • Bildirimin bilgileri doğruysa, aksi takdirde başarısız olur (ve bu şekilde yapınız).

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

    : Eğer aradığını

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

    Not Yukarıdaki mesajı hemen hemen geçerli:


Basitçe aşağıdaki iletiyle yapı kıracak main2 için main yöntemini yeniden adlandırma