2014-09-11 37 views
-1

出于测试目的,我试图在命令行中使用主类在单个项目中运行由多个Maven模块构建的Java应用程序。我希望能够指定JVM参数,Java系统属性以及主类的命令行参数,但这些都是次要目标。在模块的类路径中执行单独的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通过以下声明取决于module1module2/pom.xml

<dependencies> 
    <dependency> 
     <groupId>com.example</groupId> 
     <artifactId>module1</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </dependency> 
</dependencies> 

我想用com.exmaple.ClassInModule2类作为主类。要做到这一点,我尝试使用插件exec-maven-pluginexec:exec目标:

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 

看来,插件试图在父项目,其中主类运行命令无法找到。

我在做什么错?我如何在多模块项目中使用exec:exec目标?

回答

相关问题