问题标签 [maven-reactor]

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 回答
1465 浏览

maven - 在 Jenkins 中使用 Maven 构建多模块项目

我们正在使用 jenkins,我想知道是否可以在 1 个 Job 中使用 maven 构建我的所有模块,我们的项目结构是这样的:

我们现在的工作方式是,我们为服务器中的每个模块都有一个 jenkins 工作,为客户端提供一个 jenkins 工作,是否可以只创建一个工作并构建所有客户端和服务器模块?

0 投票
2 回答
1480 浏览

java - 从反应堆级别运行时的 Maven 强制执行器问题

使用的 Maven 版本:3.5.2、3.5.3

没有说

但是从模块级别运行 mvn clean 包时工作正常。那是跟踪中唯一的警告消息,导致执行器无法构建包。

0 投票
1 回答
114 浏览

maven - 建立依赖的依赖和依赖的依赖

-am也使依赖项)和-amd(也使依赖项)命令行选项可以一起使用,但它们不能传递地工作以例如使依赖项的依赖项。EG将

buildbc-d没有 ae给出以下反应器 (groupId= test) 模块依赖图:

依赖图

我想构建所有可能受到代码更改影响的模块c- 在 maven 中可能吗?我想这等效于从 可到达的所有顶点,即在这种情况下,除了andc之外的所有模块。fg

0 投票
0 回答
30 浏览

java - 具有项目聚合和工作目录问题的 Maven 反应器

我正在开发一个生成器项目,该项目分为多个 Maven 子项目:

根 pom 的包装类型为“pom”。

Module1 现在将使用

在依赖 jar 上执行 exec:java,它将为相对路径“target/generated-sources/...”生成一些代码

我现在的问题是,当从 module1 中执行 mvn clean install 时,一切正常,结果在“root/module1/target”中。

但是当使用 mvn clean install 从根目录开始时 - 然后代码将生成到 root/target 并且不会被 module1 pom.xml 编译/打包 - 这里的结果是一个空 jar。

所以我假设从模块内部或从根目录开始时工作目录是不同的。

我怎样才能实现这两种启动(从 root 或 module1)将产生相同的结果?- 即如何实现工作目录始终存在于实际执行的 pom.mxl 所在的位置?

0 投票
0 回答
82 浏览

maven - 除了 shell 脚本或批处理脚本之外,有没有办法以特定顺序在多个单独的模块上执行 MVN 全新安装?

我为此使用了聚合器 POM,它说“反应器包含不同的版本。反应器无效”。包含聚合器 POM 文件

0 投票
2 回答
1661 浏览

maven - 当所有模块都有不同的无法更改的父模块时,有没有办法在多个单独的模块上执行“mvn clean install”?

有具有不同模块和依赖项的项目,所有这些都需要按特定顺序一个一个地进行 mvn clean 安装。并且它们有不同的父级,并且无法更改。现在如何使用 maven reactor 自动执行此过程。因此,只需执行一次“mvn clean install”,即可对给定序列中的所有模块执行相同的操作。

0 投票
1 回答
589 浏览

java - 为什么 Spring Boot Maven 插件有时会搞乱重新打包我的反应器模块?

项目结构

我有一个 Maven 反应器项目,结构如下:

company-parent(其他依赖和插件管理的项目)

project-parent

project-api包含 WSDL 和生成的 POJO 的模块

project-impl包含 WSDL 的具体 JAX-WS 实现的模块

问题

有时,.war由于找不到文件和类加载问题,无法执行重新打包。我想通了,当问题仍然存在时,重新打包.war的 'sWEB-INF/lib包含许多.jar依赖项和一个空目录:WEB-INF/lib/project-api-1.0-SNAPSHOT.jar/.

这是输出unzip

当然,执行失败:

当我重新运行mvn install时,重新生成的文件有大约 80% 的机会war会被修复,因为project-api-1.0.jar文件应该存在于应有的WEB-INF/lib目录中,没有空目录。

mvn install在reactor parent上运行错误结果后,我检查了本地存储库中的api jar ,它是zip -T一致的。.war故障生成期间没有错误消息。检查了很多论坛,Spring Boot Maven Plugin 的问题,没有发现任何相关的。

你们中有人碰到过这个问题吗?任何帮助,将不胜感激。

PS:pom.xml不幸的是,完整的文件无法满足 30000 StackOverflow 字符的限制。

更新 1

Maven 调试日志显示了maven-war-plugin处理项目 APIjar和其他jars 的奇怪差异:

更新 2

我将问题扣除到maven-war-plugin:3.2.2. 原war文件在重新打包前就有这个问题(见相关帖子)。

更新 3

打包的问题war是参数file不指向本地存储库project-api-1.0-SNAPSHOT.jar,而是指向/absolute/path/project-parent/project-api/target/classes目录。不确定为什么这个论点是错误的。

0 投票
1 回答
45 浏览

java - 如何使用 Maven 复制文件并将第一个模块指定为目标文件夹?

除了主题中的简单问题之外,还有更多内容。我查看了“类似问题”的建议链接,但没有一个完全有帮助。

背景:为应用程序构建插件系统。其中一部分将需要其他团队自己构建插件。构建的每个插件的结构都有一个带有两个模块的反应器项目,其中一个使用 shade 插件合并到另一个模块中。这会导致在其中一个模块的目标文件夹中创建一个 jar 文件。这一切都很好。因为我们有一些所有插件都需要的东西(设置、结构、依赖项),所以我们构建了另一个项目project-plugin-parent,其中只有一个 POM,其中包含所有常见的引用和依赖项。然后,每个插件都会为所有常见项目引用这个父 POM,这样开发人员就不必担心它了。传递给 util 的参数之一是 jar 文件。

作为该 POM 的一部分,我们将一些实用程序标记为依赖项,然后将其复制到本地utils文件夹。下载该实用程序后,我们然后运行它(取决于使用的配置文件)......为了运行它,它需要是可发现的。当我将依赖项和复制命令放入插件(第一个模块)的 POM 中时,效果很好。但我们希望它实际上位于project-plugin-parentPOM 中……这会将 utils 文件夹放在反应器的文件夹中……好吧,我可以使用它。当它尝试运行该实用程序时会出现问题......因为它在父 POM 中,它尝试从那里运行它,因此错误地在参数中传递了错误的 jar 文件。

好的,这就是结构的样子

如果 util 最终出现在 plugin-project-main 中,我更愿意......但如果它最终出现在反应器结构中,那很好。不知何故,我需要能够访问plugin-project-main. 同时,我不能简单地对文件夹名称进行硬编码,因为它会因项目而异。

在 proect-plugin-parent 中,这里是 maven copy 命令的配置节点。

这将成功地从 nexus 下载文件并将其复制到反应器级别内的 utils 文件夹中。同样,我更希望它进入主插件文件夹。

这是下载的 jar 的 exec:

您可以看到我们正在传递插件 jar 的路径,该路径位于 plugin-project-main/target 中......通过上述配置,我得到了对反应器 jar 的引用(它不存在) .

那么有没有办法动态获取reactor中主模块的那个文件夹呢?如果我能做到这一点,那么我可以将 utils 放入模块的文件夹(首选),或者至少在 util 执行时将正确的路径传递给它。

0 投票
1 回答
63 浏览

maven - 我可以让 Maven 反应器使用不同的名称吗?

我已经将几个存储库放在一起,并正在尝试执行 Maven 多模块构建。一切正常,但这些 repos 中的 artifactIds 导致 maven reactor 输出令人困惑。每个 repo 生成具有不同 groupId 但相同 artifactId 的工件。例如:

那些回购和他们的工件很好。任何其他依赖于这些工件的项目都可以轻松声明正确的依赖关系。唯一的问题是反应器摘要有点无用,因为每一行都有相同的名称。

当然,只有三个 repo,不难确定哪一个失败了。但是有很多。如果这些行中的每一行都有一个唯一的名称,那就太好了。我玩过重命名目录和使用<finalName>,但这些都不起作用。显然反应器正在使用<artifactId>pom.xml 中列出的内容。

我不相信我可以证明更改这些工件的名称然后更新所有其他依赖它们的项目是合理的。为了使构建日志更易于阅读,这将是大量工作。

有没有办法在不更改 artifactIds 的情况下让不同的名称出现在反应器摘要中?

编辑:我看到另一个问题的评论,看起来作者明确避免了我的情况。这让我担心我是SOL。

0 投票
2 回答
139 浏览

maven - maven-dependency-plugin 复制的依赖项的 jar-s 未安装到本地存储库

有模块 A、B 和 C。模块 A 是模块 B 和 C 的依赖项。模块 A 中构建的所有 jar-s 都将分发到 Maven Central,但只有在模块 B 和 C 中的集成测试通过后。

为了实现上述目标,我决定实现一个多模块项目,其中包含一个专门用于分发的模块 D。

由于分发模块 D 有自己的特定坐标,模块 A 的 jar-s 将被重命名。

我的想法是将模块 A 中的 jar-s 作为依赖项复制到模块 D 的目标目录,并根据模块 D 坐标进行重命名。这是模块 D pom:

jar-s 从模块 A 复制到模块的 D 目标目录,但安装阶段完成后,我的本地存储库中只更新模块的 D pom。在构建日志中也没有关于安装复制的 jar-s 的记录。

同时,模块A的jar-s安装成功。

我试图将模块 D 的打包更改为 jar,但之后只安装了带有二进制文件的 jar,并且没有安装带有源代码和 javadoc 的 jar-s。

目前找到以下解决方法:

还有其他不那么笨拙的解决方案吗?

谢谢。