gpt4 book ai didi

maven - 构建多个 EAR,选择 jar 子集

转载 作者:行者123 更新时间:2023-12-04 05:57:11 26 4
gpt4 key购买 nike

我们当前工作的 Maven 结构构建了一个 EAR,如下所示

工作区

>parent proj (containing root pom.xml)
>ear proj
>web proj
>jar1
>jar2
>jarN

我们现在需要对此进行自定义,以便我们使用 jar 组合构建多个 EAR(针对不同的需求)。

所以建议的工作区现在看起来像这样:

工作区
>parent proj (containing root pom.xml)

>ear projects
>ear1
>ear2
>web projects
>web1
>web2

>component jars
>jar1
>jar2
>jarN

在 ear1 项目 pom.xml 中,我们要挑选我们需要的 web 项目和 jar 项目。

问题是:

a) 上述结构是否可行 - 因为名为“ear projects”、“web projects”、“component jars”的文件夹实际上没有 POM 并且什么也不构建

b) 是否可以使用同一文件夹之外的人工制品构建 ear1 pom.xml?

早期项目 ear1 与 jar1 和 jar2 并行,都是根 pom.xml 的子模块。但是在建议的结构中,ear1 不是使用并行的模块构建的,而是使用 ../web projects/web1 ../component jars/jar1 等等。

c) 有没有更好的方法来实现这一目标?

最佳答案

提供的工作区看起来不错。为了清楚起见,我把它放在这里(注意,ear、web和components都是空目录)。

parent (contains root pom.xml)
|--- ear
|--- ear1 (contains ear1 pom.xml)
|--- ear2 (contains ear2 pom.xml)
|--- web
|--- web1 (contains web1 pom.xml)
|--- web2 (contains web2 pom.xml)
|--- components
|--- jar1 (contains jar1 pom.xml)
|--- jar2 (contains jar2 pom.xml)
|--- jarN (contains jarN pom.xml)

由于项目依赖项取自存储库(本地或远程),因此模块不会位于同一级别是没有问题的。您应该将它们声明为通常的依赖项。例如,在 ear1 中,您可以指定:
<dependencies>
<dependency>
<groupId>_your_groupId_</groupID>
<artifactId>_jar1_artifactId_</artifactId>
<version>_jar1_version_</version>
<dependency>
<dependency>
<groupId>_your_groupId_</groupID>
<artifactId>_web1_artifactId_</artifactId>
<version>_web1_version_</version>
<dependency>
</dependencies>

我不确定我是否完全理解您的需求,但我会尝试描述我会做什么。

您可以使用配置文件来指定要构建的项目。例如,假设 ear1 项目依赖于 jar1、jar2、jar4 和 web2 项目。在这种情况下,您可以在根 pom.xml 文件中指定如下配置文件:
<profiles>
<profile>
<id>ear1</id>
<modules>
<module>components/jar1</module>
<module>components/jar2</module>
<module>components/jar4</module>
<module>web/web2</module>
<module>ear/ear1</module>
</modules>
</profile>
</profiles>

如果你运行 mvn package -P ear1 ,那么 Maven 将只构建 <modules> 中指定的那些模块配置文件的部分。

关于maven - 构建多个 EAR,选择 jar 子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9373478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com