是否有Maven“阶段”或“目标”来简单地执行Java类的主要方法?我有一个项目,我想通过简单地做“mvn run”之类的手动测试。
答案 0 :(得分:316)
请参阅exec maven plugin。您可以使用以下命令运行Java类:
mvn exec:java -Dexec.mainClass="com.example.Main" [-Dexec.args="argument1"] ...
如果插件配置在pom.xml中,则调用可以像mvn exec:java
一样简单。 Mojohaus上的插件网站有一个more detailed example。
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>com.example.Main</mainClass>
<arguments>
<argument>argument1</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
答案 1 :(得分:13)
上面提到的答案是正确的,但我正在为像我这样的新手简化它。转到你项目的pom文件。添加新属性exec.mainClass
并将其值作为包含main方法的类。对我来说,DriverClass
中mainpkg
为pom.xml
。根据您的项目更改它。
完成此操作后,导航到包含项目mvn exec:java
的文件夹,并在命令提示符<a>
上运行此文件夹。这应该调用main方法。
答案 2 :(得分:6)
答案 3 :(得分:6)
无需在pom.xml中添加新插件。只需运行此命令
mvn org.codehaus.mojo:exec-maven-plugin:1.5.0:java -Dexec.mainClass="com.example.Main" | grep -Ev '(^\[|Download\w+:)'
有关更多用途,请参阅Reachability。
答案 4 :(得分:6)
在pom.xml
中添加以下属性。确保使用包含main
方法的完全限定类名(即包名称):
<properties>
<exec.mainClass>${fully-qualified-class-name}</exec.mainClass>
</properties>
现在从终端触发以下命令:
mvn clean compile exec:java
注意您可以通过-Dexec.args="xxx"
标记传递更多参数。
答案 5 :(得分:2)
clean package exec:java -P Class_Containing_Main_Method
命令也是一个选项。
不要忘记在<properties></properties>
的{{1}}部分提及该课程:
pom.xml
STS运行配置以及Maven设置: