gpt4 book ai didi

java - 验证maven-jar-plugin中的manifest.mainClass

转载 作者:行者123 更新时间:2023-11-30 07:28:37 26 4
gpt4 key购买 nike

有没有办法验证(甚至使用另一个插件)为 maven-jar-plugin 指定的 mainClass 是一个有效的类,甚至更好有一个 public static void main(String[] argv) 方法吗?

重构后,这是很容易被错过的一件事,我想避免这种情况并在 verify 生命周期阶段进行检查。

最佳答案

您可以使用exec-maven-plugin及其 exec目标是执行以下命令:

java -jar target\project.jar

这确实会根据 list 文件执行它(因此执行配置的 main 方法)或失败。

因此,您可以将以下(示例)配置添加到验证阶段:

<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 以在其 list 中配置主类(本例中为示例 com.sample.Main)
  • 配置 exec-maven-plugin 以在最终 Artifact 上执行上面的 java 命令(请注意使用 maven 属性以避免硬编码 Artifact 名称和路径,推荐)
  • 作为建议,还可以向此执行传递一个进一步的参数,您的主方法应将其预见为健全性检查,即执行它进行干运行(只需将信息打印到控制台或直接返回)
  • 如果 list 信息正确,则执行将成功运行,否则将失败(因此您的构建也是如此)。
<小时/>

只需将 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] ------------------------------------------------------------------------

请注意,上面的消息几乎就是您要查找的内容:

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

关于java - 验证maven-jar-plugin中的manifest.mainClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com