java - Quarkus 开发模式下的 Maven 多模块项目
问题描述
我是 Quarkus 的新手,并尝试在 Maven 多模块项目中使用它。我的项目结构如下:
- quarkustest (pom)
- quarkustest-application (jar)
- quarkustest-backend (pom)
- quarkustest-backend-rest-api (jar)
- quarkustest-dependencies (pom)
- quarkustest-parent (pom)
应用程序模块使用 build-goal 执行 quarkus-maven-plugin。包含一个简单的REST 控制器,quarkustest-backend-rest-api
因此也包含一个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>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
quarkustest-父母
<parent>
<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../quarkustest-dependencies</relativePath>
</parent>
<artifactId>quarkustest-parent</artifactId>
<packaging>pom</packaging>
quarkustest-依赖项
<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
...
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>${quarkus.platform.artifact-id}</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-backend-rest-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus-plugin.version}</version>
</plugin>
</plugins>
</build>
quarkustest(聚合器)
<parent>
<groupId>test.quarkustest</groupId>
<artifactId>quarkustest-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>quarkustest-parent</relativePath>
</parent>
<artifactId>quarkustest</artifactId>
<packaging>pom</packaging>
<modules>
<module>quarkustest-dependencies</module>
<module>quarkustest-parent</module>
<module>quarkustest-backend</module>
<module>quarkustest-application</module>
</modules>
解决方案
如果您从未运行过mvn install
,可能是因为当您在子项目中时,maven 不会查看其兄弟项目来解决依赖项,它只会查看不包含依赖项的本地 maven 存储库。如果你跑了mvn install
,那可能是别的东西在起作用。
推荐阅读
- javascript - 在 javascript 中访问 Protobuf 枚举扩展
- java - JFrame拖动监听器?
- r - 如何比较并找到常数和矩阵的每个元素之间的最小值?
- python - 从 CSV 使用 Seaborn
- r - 试图 ggseasonplot 我的时间序列数据但得到一个错误
- python - Argparser 的一个子解析器,用于两个不同的命令
- python - 有没有办法用 python 脚本修改谷歌文档?
- javascript - 创建相交值的数组
- assembly - 为什么即使 DPMI 主机处于活动状态,INT 31H 也无法正确设置?
- c++ - 为什么第二个连续的 for 循环执行得更快?