我试图运行exec-maven-plugin的exec:java一个简单的两模块项目的目标,其中一个模块依赖于其他.到目前为止,我找不到有效的配置.这是一个简化的测试用例:
这是父母pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkscrg.sandbox</groupId>
<artifactId>exec-multi-module-test</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>module1</module>
<module>module2</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
module1的pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>exec-multi-module-test</artifactId>
<groupId>com.mkscrg.sandbox</groupId>
<version>1.0</version>
</parent>
<artifactId>module1</artifactId>
</project>
Run Code Online (Sandbox Code Playgroud)
module2的pom:http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0
<parent>
<artifactId>exec-multi-module-test</artifactId>
<groupId>com.mkscrg.sandbox</groupId>
<version>1.0</version>
</parent>
<artifactId>module2</artifactId> …Run Code Online (Sandbox Code Playgroud) 我有一个由两个不同模块组成的项目.我无法控制这些模块的pom文件,因此无法更改它们.我完全控制了项目pom文件.项目ID未定义为模块中的父项.
文件夹结构:
project
+ module1
+ module2
Run Code Online (Sandbox Code Playgroud)
作为解决方案的一部分,我需要为两个模块执行两个不同的目标,以便将module1安装到本地存储库中,而不是module2.这只是一个例子.我的实际问题包含更多级别,每个级别有2个以上的模块.
为了最小化我的CI系统所需的配置,我想在一个maven调用中运行它.
我正在"梦想"某些事情
mvn install -Dspecial=module:compile
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果是的话,我该怎么做?
我是 Quarkus 的新手,并尝试在 Maven 多模块项目中使用它。我的项目结构如下:
- quarkustest (pom)
- quarkustest-application (jar)
- quarkustest-backend (pom)
- quarkustest-backend-rest-api (jar)
- quarkustest-dependencies (pom)
- quarkustest-parent (pom)
Run Code Online (Sandbox Code Playgroud)
应用程序模块使用 build-goal 执行 quarkus-maven-plugin。的quarkustest-backend-rest-api包含一个简单的REST控制器并因此也是一个beans.xml在/src/main/resources/META-INF。rest-api-module 是应用程序模块的引用。
如果我使用 打包整个项目mvn package,则生成的 runner-jar 将按预期工作。但是,如果我尝试使用 以开发模式启动项目,则会出现mvn compile quarkus:dev以下异常:
错误] 无法在项目 quarkustest-application 上执行目标 io.quarkus:quarkus-maven-plugin:1.0.0.CR2:dev (default-cli):无法运行:无法解析 Quarkus 应用程序模型:无法解析依赖关系test.quarkustest:quarkustest-application:jar:1.0.0-SNAPSHOT: 找不到工件 test.quarkustest:quarkustest-backend-rest-api:jar:1.0.0-SNAPSHOT -> [帮助 1]
我不太确定如何解决这个问题。Quarkus 的多模块项目是否有任何最佳实践?我在这里做的任何明显错误?
编辑1(相关pom文件)
quarkustest-应用程序
<parent>
<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../quarkustest-parent</relativePath>
</parent>
<artifactId>quarkustest-application</artifactId>
<dependencies>
<dependency>
<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-backend-rest-api</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId> …Run Code Online (Sandbox Code Playgroud)