鉴于以下Maven项目:
我能够在maven-exec-plugin
子模块中配置server
来运行其中的应用程序。但是,如果有人更新了对等子模块(例如database
),那么我会收到运行时错误。我想做的是有一些机制:
root-project
或server
。server
这样,我可以从单个点启动所有项目范围的操作,而不必在两个项目之间进行上下文切换。
我尝试在maven-exec-plugin
配置root-project
来执行此操作,但<classpath/>
解析为root-project
的类路径,而不是所需的server
类路径。
我想知道是否可以从另一端接近这一点(在maven-compiler-plugin
中配置server
以构建root-project
及其依赖项)但我不知道如何这样做。我也担心这可能会导致无休止的循环root-project
尝试构建server
和server
尝试构建root-project
。
答案 0 :(得分:0)
我希望我理解你的问题是正确的,它看起来像我的任何其他项目:
我已经从https://github.com/johanwitters/stackoverflow-mavenExec
创建了一个项目模块&#34;数据库&#34;有一个类com.johanw.stackoverflow.database.Database定义为:
package com.johanw.stackoverflow.database;
public class Database {
public static String DATBASE_NAME = "The name";
}
模块&#34;服务器&#34;取决于模块&#34;数据库&#34;。
<dependency>
<groupId>com.johanw.stackoverflow.mavenExec</groupId>
<artifactId>database</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
模块&#34;服务器&#34;有一个exec-maven-plugin插件定义为:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.johanw.stackoverflow.server.Test</mainClass>
</configuration>
</plugin>
这将运行来自&#34; server&#34;的com.johanw.stackoverflow.server.Test类,其定义为:
package com.johanw.stackoverflow.server;
import com.johanw.stackoverflow.database.Database;
public class Test {
public static void main(String[]args) {
System.out.println("Hello " + Database.DATBASE_NAME);
}
}
你提到过&#34;我不介意这是哪个项目,它可能是root-project或server&#34;。因此,为了使上述工作,您需要构建根项目。当你这样做时,root(父)项目stackoverflow-mavenExec使用...
mvn clean install
...它最终将运行com.johanw.stackoverflow.server.Test并输出
Hello The name
如下图所示:
如果您只想在根目录中运行服务器主类,请运行以下命令。
mvn exec:java -pl server -Dexec.mainClass=com.johanw.stackoverflow.server.Test
如果您的目标是在干净安装和运行服务器之间切换,那么您可以删除服务器pom中exec-maven-plugin的定义,并分别运行:
mvn clean install
和
mvn exec:java -pl server -Dexec.mainClass=com.johanw.stackoverflow.server.Test
我希望这会有所帮助。