我有一个包含多个应用程序(不同但密切相关的微服务)的解决方案,这些应用程序共享通用且相当复杂的代码。该项目使用Maven,当前设置为:
- Root pom
- Quarkus application 1
- Quarkus application 2
- Shared library
我的问题是我想使用开发模式来获取更改,但我无法使其工作。对于单个Quarkus应用程序,它受到支持,并且可以从根文件夹使用quarkus:dev进行构建。对于两个Quarkus应用程序,不清楚启动的是哪一个。
我可以使用Maven的-pl
选项来选择我想要启动的那个,但是它找不到共享库(因为构建是从所选项目而不是根项目完成的)。为了解决这个问题,我可以先安装共享库(mvn安装
),但是接下来QUKUS会自然地使用已安装的版本,我想使用实时代码,以便接收共享库中的更改。
如果这是不可能的,我会将模型保留在一个应用程序中,并从另一个应用程序中“安装”它;这样,实时编码至少应该在其中一个应用程序中工作。在此之前,我想知道是否有一种方法可以通过多个QUkus应用程序来完成我想要的事情,其中特定应用程序是从顶级Maven构建的开发模式启动的?
这个限制主要来自Maven。如果您使用-pl或-f启动应用程序,则无法找到依赖项的是Maven,而不是QUKus,对吗?QUKus将发现完整的工作区,但Maven在此之前失败了。
您可以尝试使用maven配置文件。一、 e.一个配置文件将启用包含一个应用程序和另一个配置程序的模块-应用程序。从根目录启动时,将启用所需的配置文件。
有这样的东西:
<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
并将配置文件重命名为app1
和app2
,您可以使用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提交钩子触发构建 。我想知道,如果我通过出色的指令来设置提交挂钩的麻烦,那将不会导致构建过程