问题标签 [multi-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
855 浏览

maven - 试图连接模块 pom 和父 pom。如何设置相对路径?

我还没有找到合适的例子,所以我在这里问:

我的项目结构是

好的,我可以在 parentpom.xml 中添加测试模块。

但我无法在测试插件的 pom.xml 中找到到父 pom 的正确相对路径。

有人能帮我吗?还是不可能使用两个 ../ ?

0 投票
2 回答
6973 浏览

java - 如何在多模块 Maven 项目中配置 slf4j+logback?

我的 Maven 项目有大约七个子模块。其中六个打包为 JAR,一个打包为 WAR。

我应该在每个模块中创建单独的 logback.xml 配置吗?或者我应该有一个所有其他模块都依赖的“通用”模块,然后在里面放一个 logback.xml?还有其他选择吗?

谢谢。

0 投票
2 回答
1739 浏览

maven - Maven 组装子模块 多模块

嗨,我需要从主目录中的多模块项目中组装 jar。让我们有一个这样的结构:

我想要实现的是在 MASTER 中组装所有 jar 打包的模块。

目前,我通过创建 pom.xml 仅在子模块(A3 和 B3)上实现了良好的分辨率,例如:

和程序集描述符:

当我做

在子模块(A3 或 B3)上,它们似乎可以很好地组装自己的子模块。

我不知道如何在 MASTER 中指定程序集描述符。类似于 A3 和 B3 的描述符不处理它([ERROR] 你必须至少指定一个文件)。我尝试了几个额外的标签,比如 includeSubModules ......仍然没有。

0 投票
4 回答
3104 浏览

maven - 关于创建 Maven 项目结构的建议 - 多个模块与多个项目?

考虑以下企业应用程序分层示例:

  1. 项目服务 -> POJO 服务层
  2. project-web -> Web 应用程序,依赖于“project-services”,部署为 WAR
  3. project-web-services -> Web Services ,依赖于“project-services”,部署为单独的 WAR,当前未通过 Internet 公开
  4. project-standalone -> Cron Jobs,依赖于“project-services”

在 Maven 中组织这个的正确方法是什么。我应该创建一个多模块 Maven 项目吗?如果 'project-services' 是一个 Maven 模块,它是否可以与其他三个项目共享,每个项目都是一个独立的可部署单元?

在我以前的项目中,我只是创建了 4 个不同的 Maven 项目,并且从未觉得需要其他任何东西。

想验证是否有比我以前做的更好的方法。

0 投票
2 回答
8069 浏览

maven - 多模块项目和 ${basedir} 占位符

我有一个具有以下结构的多模块项目:

我想在父 POM 中配置 javadoc 插件。但是,我需要指定stylesheet.css文件的路径。所以,我使用 value ${basedir}\src\main\javadoc\stylesheet.css。但是,当我查看子模块的有效 POM 时,将${basedir}替换为子模块基目录的绝对路径,但那里没有src/main/javadoc/stylesheet.css文件。我认为,在子模块中复制stylesheet.css文件不是解决方案。

谢谢

0 投票
3 回答
12684 浏览

maven - 分层多模块项目的 Maven 命名约定

我对具有分层目录结构的多模块项目中的 Maven 命名约定(groupId、artifactId 和目录名称)有疑问。

研究

在询问之前,我浏览了有关此主题的其他网络以及我为自己清除的内容:

  1. 我的问题可能重复,但它不涵盖多层次结构。

  2. 项目目录名称应与 artificatId 匹配

  3. 命名约定指南 提供了示例:

    • groupId将在所有项目中唯一标识您的项目,因此我们需要强制执行命名模式。它必须遵循包名规则(例如 org.apache.maven、org.apache.commons、org.apache.maven.plugins)

    • artifactId如果你创建了它,那么你可以选择任何你想要的名字,小写字母,没有奇怪的符号。(例如,maven、commons-math)

这很简单,我理解它,但是仍然有一些不清楚的地方。

约定中提到的artifactId示例只能应用于一级层次结构模块。

例子

我浏览了 maven 存储库并提取了一些示例:

Spring主要使用名称:spring-core、spring-context、spring-context-support。所有独立模块都是一级层次结构和 spring- 前缀以提高搜索效率。没有问题,因为层次结构没有那么深。

Apache CXF命名对于 Apache 来说是非常规的。工件是独立的模块,名称中最多有 5 个可能的不同工件,例如。cxf-tools-wsdlto-databinding-jaxb。

有很多工件(cxf-rt-databinding-jaxb、cxf-rt-databinding-aegis、cxf-rt-databinding-xmlbeans、cxf-rt-databinding-sdo)可以分组到多个模块项目中(cxf-rt -databindings),但他们没有,所以名字变成了意大利面条。

最后,Maven 插件首先是一个多模块项目(在 org.apache.maven 之后),它具有以下工件:maven-compiler-plugin、maven-enforcer-plugin。

有很多示例,并且都遵循命名 artifactIds 的不同约定(因此是项目目录)。

结果

从示例中获取最佳实践让我们回顾层次结构级别。

一级层次结构命名将是(

(续)两级层次结构将是:

你看到问号了吗?那就是

问题

我遵循示例中的约定(忽略意大利面条 Apache CXF 示例):

  • 根 - 项目门户(例如 spring-core、maven-core)
  • 第一级层次结构名称继承自根 - project-portal-plugins(例如 spring-context-support)。
  • 二级层次结构名称 - project-sample-plugin(例如 maven-compiler-plugin)。

现在我们被困在第三层,就像在没有保存和检查点的旧游戏中一样。

  1. 这是从 Maven 示例中获取的更深层次结构级别的正确目录命名路径吗?
  2. 您是否遵循任何约定或规则来支持简单的目录和工件名称,避免在更深层次上使用意大利面条名称?
  3. 如果有简单的名称,groupId 是否会从存储库中的冲突中保存重复的工件名称(由于简单而会发生)?
  4. 如何在具有重复名称的 Web/存储库上搜索和查找工件(由于简单性)?

我不想在我的项目结构中看到像 project-portal-liferay-plugins-themes 这样的模块用于父级,或者更糟糕的是 project-portal-liferay-plugins-themes-white-puppy-wtf-name 用于孩子。

如果您可以为任何提到的问题和可能的问题提供您的意见和实践,那不仅对我有很大帮助,而且对使用 maven 的每个人也有很大帮助。谢谢你。

0 投票
1 回答
4360 浏览

tomcat - Tomcat部署在Maven多模块项目中

我有一个包含两个模块的maven项目:jar和war。战争模块取决于 jar:

早期我使用 org.codehaus.mojo tomcat-maven-plugin 插件通过命令部署我的单个战争项目:

但是这里这个命令不起作用。如何在多模块案例中部署战争项目?

找到解决方案如何使用 maven 中的 tomcat 插件部署多个战争?

我在我的子战争项目的 pom.xml 中添加了这个:

在父项目上我可以运行:

0 投票
0 回答
3183 浏览

maven - Sonar 报告测试类本身的 JaCoCo 覆盖率。这个对吗?我该如何改变?

我们有一个 Eclipse 插件的多模块 Maven 项目。

使用 JaCoCo 生成代码覆盖率报告正在运行,但统计数据似乎是错误的。

正在计算测试类本身的覆盖率,并将其添加到一般代码覆盖率中。

例子:

  • 一个名为 org.myplugin 的插件有 50% 的覆盖率和 100 行代码。
  • 名为 org.myplugin.tests 的测试插件具有 100% 的覆盖率和 100 行代码。
  • 一般代码覆盖率达到 75% 或 150 行代码。

这当然不是真的正确,因为重要的是覆盖率真的只有正常代码的 50%。

这是正常行为吗?我能做些什么来排除测试类的覆盖率?

编辑:以下是我们的几个 POM 文件的相关部分:

项目 POM:

插件POM:

测试插件 POM:

0 投票
2 回答
8425 浏览

maven - 如何使用主 pom 文件检查 Web 应用程序的所有模块并构建所有模块

我有一个依赖于多个模块的 Web 应用程序。所以要构建它,我有一个主 pom.xml 文件。我想要这个 pom 文件做的是检出所有模块。下面是我的 pom 文件。

我已经尝试过mvn scm:checkoutmvn scm:checkout -check-out-project1但它给了我错误: 无法运行结帐命令:无法加载 scm 提供程序。您需要定义一个 connectionUrl 参数。

我不明白为什么会发生这种情况,因为我已经在 pom 文件中定义了 connectionUrl 参数,我想要得到的想法点是将 pom 文件配置为能够同时签出多个项目。请让我知道我在这里做错了什么,在此先感谢。

0 投票
2 回答
198 浏览

maven - 如何存储和签出使用组织范围 POM 的项目?

Eclipse 有一个我正在使用的不错的功能——从 SCM 中签出 maven 项目——它获取多模块项目的父 pom,将其签出,然后将其所有模块签出到本地工作站。它非常易于使用,而且非常干净。与团队一起使用很棒。它以分层方式(我喜欢)存储项目......例如 - 父 pom 是根,所有模块都在父文件夹中。

但是,现在我要添加另一个元素 - 一个组织范围的 POM,用于很少更改的设置。我唯一感到困惑的是,这将如何改变我的其他(不相关)项目的结构,这些项目都使用组织范围内的 pom.xml。我不想将其他 superpom 列为公司父级的“模块”,我只是希望它非常简单。

有什么方法可以让我的多模块父项目(带有 POM 包装的项目)实际上成为组织范围的 pom 的一个模块,而每个项目中没有三个级别的文件夹?例如,我可以将该 pom 存储在我的档案存储库中,以便可以使用依赖项来解决它(而不是实际将文件放在我的项目的根目录中)?

如果我实际上必须将组织范围的 pom 作为每个多模块项目的根,我是否需要将我的项目从分层结构更改为平面结构(所有模块与父级位于同一目录中)才能完成这项工作在我公司有吗?

为使用这种结构的组织工作的人通常如何存储和检查这些项目?我在这里想念什么?多模块项目(没有父 pom)非常干净和可用。添加另一层(超级超级 pom)真的让我很困惑!

谢谢!