使用quarkus:dev构建多模块maven中的多个quarkus应用程序



我有一个包含多个应用程序(不同但密切相关的微服务(的解决方案,这些应用程序共享通用且相当复杂的代码。该项目使用Maven,目前设置为:

- Root pom
- Quarkus application 1
- Quarkus application 2
- Shared library

我的问题是,我想使用开发模式来获取更改,但我无法实现这一点。对于单个Quarkus应用程序,它是受支持的,并且可以从根文件夹使用Quarkus:dev进行构建。对于两个Quarkus应用程序,尚不清楚启动的是哪一个。

我可以使用Maven的-pl选项来选择我想要启动的库,但它找不到共享库(因为构建是从选定的项目而不是根目录中完成的(。为了解决这个问题,我可以先安装共享库(mvn install(,但Quarkus自然会使用已安装的版本,我想使用实时代码,以便接收共享库中的更改。

如果这不可能,我将把模型保留在一个应用程序中并使用它";已安装";来自另一个;这样,实时编码至少应该在其中一个应用程序中起作用。在此之前,我想知道是否有一种方法可以通过多个Quarkus应用程序实现我想要的目标,其中特定的应用程序是在开发模式下从顶级Maven构建启动的?

有这样的东西:

<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>org.acme</groupId>
<artifactId>acme-common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<module>common</module>
</modules>
<build>
<plugins>
<plugin>
<groupId>${quarkus.platform.group-id}</groupId>
<artifactId>quarkus-maven-plugin</artifactId>
<version>${quarkus.platform.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>app1Dev</id>
<modules>
<module>app1</module>
</modules>
<build>
<defaultGoal>clean compile quarkus:dev</defaultGoal>
</build>
</profile>
<profile>
<id>app2Dev</id>
<modules>
<module>app2</module>
</modules>
<build>
<defaultGoal>clean compile quarkus:dev</defaultGoal>
</build>
</profile>
</profiles>

您可以使用mvn -Papp1Dev从项目的根目录启动app1,使用mvn -Papp2Dev启动app2。

或者,您可以删除defaultGoal并将配置文件重命名为app1app2,也可以使用类似mvn -Papp1 compile quarkus:dev的命令。

这个限制主要来自Maven。如果你用-pl或-f启动应用程序,是Maven找不到依赖项,而不是Quarkus,对吧?Quarkus将发现完整的工作区,但Maven在此之前失败了。

您可以尝试使用maven配置文件。也就是说,一个配置文件将启用包含一个应用程序和另一个配置程序的模块——应用程序。当您从根启动时,您将启用所需的配置文件。

最新更新