出于测试目的,我尝试使用命令行中的主类在单个项目中运行从多个Maven模块构建的Java应用程序。我希望能够为主类指定JVM参数,Java系统属性以及命令行参数,但这些都是次要目标。
我已经设置了一个具有以下结构的简单项目:
./module1/pom.xml
./module1/src/main/java/com/example/ClassInModule1.java
./module2/module2.iml
./module2/pom.xml
./module2/src/main/java/com/example/ClassInModule2.java
./pom.xml
module2
通过module1
中的以下声明取决于module2/pom.xml
:
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>module1</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
我想使用类com.exmaple.ClassInModule2
作为主类。为此,我尝试使用插件exec:exec
的{{1}}目标:
exec-maven-plugin
但这会导致以下错误:
mvn -pl module2 -Dexec.executable=java -Dexec.args='com.example.ClassInModule2' exec:exec
这很奇怪,因为[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building module2 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.450s
[INFO] Finished at: Thu Sep 11 13:31:16 CEST 2014
[INFO] Final Memory: 7M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project module2: Could not resolve dependencies for project com.example:module2:jar:1.0.0-SNAPSHOT: Could not find artifact com.example:module1:jar:1.0.0-SNAPSHOT -> [Help 1]
中记录了module1
。我尝试将./pom.xml
添加到命令行:
-am
但这会导致不同的错误:
mvn -am -pl module2 -Dexec.executable=java -Dexec.args='com.example.ClassInModule2' exec:exec
似乎该插件正在尝试在父项目中运行该命令,在该项目中无法找到主类。
我做错了什么?如何在多模块项目中使用[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] project
[INFO] module1
[INFO] module2
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building project 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- exec-maven-plugin:1.3.2:exec (default-cli) @ project ---
Error: Could not find or load main class com.example.ClassInModule2
目标?
答案 0 :(得分:0)
尝试将-Dexec.args =“ - cp%classpath%com.whatevermainclassname”与其他参数一起使用。 有关详细信息,请参阅此处:
http://mojo.codehaus.org/exec-maven-plugin/examples/example-exec-for-java-programs.html