gpt4 book ai didi

java - 如何部署具有扁平模块层次结构的 Maven 父模块?

转载 作者:行者123 更新时间:2023-12-01 12:55:46 25 4
gpt4 key购买 nike

我有 3 个 Maven 模块。一个是将其他 2 个模块分组的父模块。所有项目文件夹都位于同一根级别。

虽然部署不起作用。以下配置有什么问题?

project-parent/pom.xml
project-commons/pom.xml
project-web/pom.xml

父pom:

<project>
<groupId>de.myproject</groupId>
<artifactId>project-parent</artifactId>
<packaging>pom</packaging>
<modules>
<!-- <module>../project-commons</module> -->
<module>../project-web</module>
</modules>
</project>

网络pom:

  <parent>
<groupId>de.myproject</groupId>
<artifactId>project-parent</artifactId>
<version>1.0.0</version>
<relativePath>../project-parent/pom.xml</relativePath>
</parent>

结果:

[ERROR]   The project de.myproject:project-parent:1.0.0 has 1 error
[ERROR] Child module \project-parent\..\project-web\pom.xml of \project-parent\pom.xml does not exist

项目结构:

svn/project-commons/trunk/pom.xml
svn/project-web/trunk/pom.xml
svn/project-parent/pom.xml

最佳答案

我将概述一种我在大型和小型项目中成功使用的方法,可能会满足您的需求。

pom.xml
superpom/pom.xml
utils0/pom.xml
utils1/pom.xml
utils2/pom.xml
services0/pom.xml
services1/pom.xml
services2/pom.xml
war0/pom.xml
war1/pom.xml

在此示例中,utils 和 services 模块生成 jar; war 模块产生 war 。 utils、services 和 wars 之间会存在各种依赖关系。

superpom 模块的类型为 pom,仅包含父 pom。每个 util/service/war pom.xml 都使用 ../superpom 的相对路径引用父级:

<parent>
<groupId>mygroup</groupId>
<artifactId>superpom</artifactId>
<version>1.3.3.3-SNAPSHOT</version>
<relativePath>../superpom</relativePath>
</parent>

superpom/pom.xml 不包含任何元素,也不以任何方式引用“子”模块/poms。 superpom 包含共享属性、插件配置、依赖版本等。它是一个很大的 pom。所有其他模块的 pom(通常)都很小。

顶级 pom 包含对所有其他模块(包括 superpom)的引用。它没有父 pom(至少没有位于该项目层次结构中的父 pom)。您使用顶层(而不是 superpom)来构建所有内容。您可以使用配置文件(或其他方式)来控制要构建的模块,但我通常只是从这里构建整个树。对 SCM、CI 构建等的支持位于这个顶级 pom 中,这使您的所有其他项目(包括父 pom)保持干净,并且只关心构建和测试 Artifact 。

我的 Maven 结构中没有任何“主干”的概念 - 这是一个正交概念。如果我想在主干或分支上工作,我会检查合适的分支并始终具有相同的 Maven 结构。

关于java - 如何部署具有扁平模块层次结构的 Maven 父模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916211/

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