在模块的类路径中执行单独的Java进程

时间:2014-09-11 11:38:42

标签: maven classpath

出于测试目的,我尝试使用命令行中的主类在单个项目中运行从多个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 目标?

1 个答案:

答案 0 :(得分:0)

尝试将-Dexec.args =“ - cp%classpath%com.whatevermainclassname”与其他参数一起使用。 有关详细信息,请参阅此处:

http://mojo.codehaus.org/exec-maven-plugin/examples/example-exec-for-java-programs.html