如何使用Maven执行程序?
我想有一个Maven目标触发java类的执行。 我正在尝试通过以下行迁移Makefile
:
neotest: mvn exec:java -Dexec.mainClass="org.dhappy.test.NeoTraverse"
我希望mvn neotest
生产目前make neotest
东西。
exec插件文档和Maven Ant任务页面都没有任何简单的例子。
目前,我在:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1</version> <executions><execution> <goals><goal>java</goal></goals> </execution></executions> <configuration> <mainClass>org.dhappy.test.NeoTraverse</mainClass> </configuration> </plugin>
不过,我不知道如何从命令行触发插件。
使用您为exec-maven-plugin定义的全局configuration :
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.4</version> <configuration> <mainClass>org.dhappy.test.NeoTraverse</mainClass> </configuration> </plugin>
在命令行中调用mvn exec:java
将调用configuration为执行类org.dhappy.test.NeoTraverse
的插件。
所以,要从命令行触发插件,只需运行:
mvn exec:java
现在,如果要执行exec:java
目标作为标准构build的一部分,则需要将目标绑定到默认生命周期的特定阶段 。 为此,在execution
元素中声明你想要绑定目标的phase
:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>my-execution</id> <phase>package</phase> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>org.dhappy.test.NeoTraverse</mainClass> </configuration> </plugin>
在这个例子中,你的类将在package
阶段执行。 这只是一个例子,适应你的需要。 也适用于插件版本1.1。
为了执行多个程序,我还需要一个profiles
部分:
<profiles> <profile> <id>traverse</id> <activation> <property> <name>traverse</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath/> <argument>org.dhappy.test.NeoTraverse</argument> </arguments> </configuration> </plugin> </plugins> </build> </profile> </profiles>
这是可执行的,如下所示:
mvn exec:exec -Dtraverse