当前位置: 首页 > 知识库问答 >
问题:

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

万俟渊
2023-03-14

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

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

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

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

如果这是不可能的,我会将模型保留在一个应用程序中,并从另一个应用程序中“安装”它;这样,实时编码至少应该在其中一个应用程序中工作。在此之前,我想知道是否有一种方法可以通过多个QUkus应用程序来完成我想要的事情,其中特定应用程序是从顶级Maven构建的开发模式启动的?

共有2个答案

倪棋
2023-03-14

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

您可以尝试使用maven配置文件。一、 e.一个配置文件将启用包含一个应用程序和另一个配置程序的模块-应用程序。从根目录启动时,将启用所需的配置文件。

郭志泽
2023-03-14

有这样的东西:

  <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>

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

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

 类似资料:
  • 我将转向maven多模块构建。 我的项目结构如下所示: 是一个Maven Eclipse项目,由M2E构建。 我添加了MyProject-Core/src/main/java作为Eclipse源文件夹,但由于我将父pom中的依赖项部分更改为dependencyManagement,因此我从Eclipse中得到了构建错误。手动调用mvn包仍然可以正常工作。 如何配置Eclipse以正确解决核心pom

  • 我有一个Maven Java应用程序,我正在尝试进行对接。到目前为止,我有以下dockerfile,是我从这个答案中复制的。 如果我的应用程序是一个单模块项目,这将是很好的,但是因为它是多模块的,所以我假设我不能仅仅使用。 但是,这会在阶段出错: 注意,来自我的本地m2文件夹。

  • 然而,我发现实际的构建顺序是不同的...build之后,实际的订单看起来像; 在这种情况下,Maven从哪里获取构建命令?

  • 嗨我在网上搜了一遍,看了一堆文章,所以问题和文档都找不到解决办法,这里是我的问题。 我有一个多模块maven项目,其中包含三个模块a、B和C,a和B独立,C依赖于a和B,当然我有一个父项目。我还设置了一个jenkins服务器来构建这些项目,以及一个nexus存储库。 如有任何帮助,不胜感激。谢谢!

  • 嗨,我正在使用maven多模块项目和google cloudendpoint作为api管理,我能够成功地使用appengine devserver运行应用程序,但当我将它部署到appengine时,它显示如下错误。

  • 问题内容: 我在Jenkins中建立了一个大型Maven多模块构建。它是为增量构建而设置的。 触发后,它将解析所有POM并弄清楚需要构建什么。 当前已将其设置为触发SCM更改。 我想进行此构建,以便可以执行以下操作: 仍然手动启动它。当我这样做时,它的增量构建行为将像今天一样起作用。 从Subversion提交钩子触发构建 。我想知道,如果我通过出色的指令来设置提交挂钩的麻烦,那将不会导致构建过程