问题标签 [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 回答
1695 浏览

spring - Maven 反应器:使用 Spring Boot 启动器 pom 的 pom

我有一个包含多个模块的项目。其中一些使用 spring boot,其他是没有任何 spring 依赖的普通 jars。所以我对每个模块都有一个父 pom.xml 设置。麻烦在于 spring boot 项目。

我已经设置了每个 spring boot 项目中列出的 spring boot依赖scope=import项。它是否正确?或者我应该把它移到我的父 POM 中吗?

我遇到的问题 1. 当我从顶层文件夹运行 mvn package 时,它​​不会重新打包 spring boot jars。2. 我的 Spring Boot 项目列出了其他 Spring Boot 依赖项。以 spring boot starter 作为父级,他们不需要版本标签。现在他们做到了。我已将其定义为父 pom 中的属性并添加了版本标签,但想知道这是否更好。

谢谢阅读。

更新对评论 #1 的回复:我的spring-boot-maven-plugin父 POM 中有如下

我也尝试过mvn spring-boot:repackage在我的 Spring Boot 项目中手动运行 - 但错误是:repackage failed: Source must refer to an existing file -> [Help 1]

0 投票
1 回答
3024 浏览

maven - Jenkins maven-project 插件不支持反应器模块排除

我无法让模块排除与 Jenkins maven 插件一起使用,请参阅下面的输出:

当我将命令复制到同一作业中的预构建 shell 步骤中时,它可以工作:

在堆栈跟踪中,您可以看到 hudson-maven 代理正在干扰。显着的区别是:

  • 哈德逊用途org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard和外壳用途...launchEnhanced
  • hudson 失败,org.apache.maven.DefaultMaven.trimSelectedProjects但 shell 失败...trimExcludedProjects

完整的堆栈跟踪是:

当我故意尝试在预构建步骤中排除不存在的模块时,将其与故障堆栈跟踪进行比较:

我也尝试过使用语法,也尝试过在like-pl !gotham/java/dev-server之后不加空格pl-pl!gotham/java/dev-server

注意:这些运行之间存在细微差别 - 直接从 shell 执行的是Using local repository at /home/jenkins/.m2/repository,而通过插件执行的不是。我不确定是什么原因,但我怀疑它是否相关

我正在使用 Jenkins 版本 1.540 和 maven-project 插件 v. 2.8(最新)

0 投票
2 回答
466 浏览

maven - 强制执行模块的构建顺序

我有带有模块的 Maven 项目module1module2等等module3。我在父级的 pom.xml 中定义了这些模块,看起来像

默认情况下,“maven-reactor”通过应用使用多个模块指南中描述的规则对模块 进行排序,但是,我不想使用 maven 对模块进行排序,而是使用我在父 pom.xml 中提供的顺序。

0 投票
2 回答
1093 浏览

maven - 如果子模块是独立版本控制的,如何安排 maven reactor 的依赖管理?

我们有一个反应堆 pom,它的子模块是独立版本的,即。子模块声明它自己的版本,独立于主 pom 的版本。然而,两个子模块之间存在依赖关系。应该如何将此依赖项配置为始终使用反应器 pom 的实际模块声明的版本?

我希望我可以在根 pom 中设置依赖管理并使用一些隐式属性来确定子模块的版本,但我能找到的最好的选择是:

或者干脆

所以根 pom 中的依赖管理看起来像这样:

看起来不可靠,因为添加新模块或依赖项时反应器顺序可能会发生变化。

也许这种使用场景是设计不鼓励的,然后我想知道为什么。

编辑:正如评论中所建议的,在父 POM 中声明具有子版本的全局属性可能是较新版本的 Maven 的一个选项。然而,我希望看到一些关于更广泛后果的分析,如工作流、发布、目录和存储库设置、一些插件使用(例如版本插件)等。例如,我认为这种方法的直接后果是我必须发布每当发布任何子模块时,父模块。虽然这是可行的,但它会影响拥有独立版本控制的最初想法。

0 投票
1 回答
16450 浏览

maven - 使用 maven -pl 选项和从模块级别运行 maven 有什么区别?

有没有区别

在我看来,这两个动作的结果应该是一样的。

然而,每种情况下的行为似乎都不同:前一种似乎更广泛;后者结束得更快 - 我试图理解为什么会这样。

0 投票
2 回答
2192 浏览

java - 使用 minify-maven-plugin 缩小前端

我正在使用 maven 插件minify-maven-plugin来缩小我的前端项目。当我将 dos 框转到前端项目并执行时,这工作正常,mvn clean install但是当我mvn clean install在反应器项目的主 pom 中执行时,我得到以下异常:

无法在项目 my.project-frontend 上执行目标 com.samaxes.maven:minify-maven-plugin:1.7.4:minify (default-minify):执行目标 com.samaxes.maven:minify-maven-的默认-minify插件:1.7.4:缩小失败:basedir ./src/main/resources/public/app/。不存在

有谁知道该怎么做才能完成这项工作?

在相关插件配置下方:

0 投票
1 回答
2066 浏览

maven - 如何在反应堆 POM 中覆盖模块 POM 的“distributionManagement”?

我有一个 maven 项目,它基本上是围绕其他几个独立项目的反应堆 pom。

    • 模块1
      • 子模块1
      • 子模块2
    • 模块2
      • 子模块3
      • 子模块4

这些submoduleX模块继承自各种父 POMS(例如submodule1,具有不同的父 POMS submodule2)并且不受我的控制。但是我想将我的项目的工件部署到某个存储库。因此,在我的根反应器 pom 中,我指定了一些<distributionManagement>设置,其中配置了工件的存储库。

但是,当mvn deploy在 reactor POM 上运行时,子模块会尝试将其工件部署到从其父 pom 继承的存储库中,而不是在根 reactor pom 中指定的存储库。有什么方法可以从根反应器 pom 中覆盖它,还是我在这里不走运?

0 投票
1 回答
115 浏览

maven - Maven分层依赖搜索

所以我有一个问题,那就是 - Maven 似乎忽略了依赖关系,即使它们应该在层次结构中可见。

我有以下项目层次结构:
parent
--projA
--sub-parent1
----projB
----projC

所有级别都通过<parent>标签链接。 sub-parent1projBprojC声明为模块,没有声明依赖项。但projBprojA. 并且构建整个sub-parent1模块不会构建projA,这很奇怪,因为projB知道sub-parent1并且sub-parent1知道parent并且知道依赖(projA)。但是 Maven 不会在我构建整个sub-parent1或者例如-pl projB -am clean install.
任何帮助表示赞赏。

编辑:我创建了一个结构,代表这个结构。尝试构建子父级:dropmefiles.com/5l42j

编辑:父pom:

项目:

子父 1:

项目B:

编辑:虽然我有与 Maven 多模块项目相同的解决方案找不到兄弟模块- 这个问题是不同的,因为它不仅处理多模块,而且处理多级(几级模块)项目并且那里的人没有明确告诉 maven建立依赖关系。

解决方案: 所以似乎唯一的解决方案是 - 从最上层的 pom 构建这样的多级结构,在我的情况下,它将是父级(所以父级是当前目录)和地址模块,您需要通过父级的相对路径构建。这导致:

顺序将是:

0 投票
2 回答
411 浏览

maven - SNAPSHOT 或非 SNAPSHOT 是库和 Maven 在发布供其他人使用时的约定吗?

我将其从主干与分支发布问题中排除,因为这是一个单独的问题。

假设您已经完成了开发迭代,并且正在推出一个版本供其他人在他们的项目中使用。

现在我团队的一些成员说:

SNAPSHOT 用于在您的团队中进行迭代 - 非 SNAPSHOT 用于实际发布。

但是当我查看反应器插件和相关评论时 - 它似乎是相反的

你只应该发布 SNAPSHOT 版本。这意味着您的版本号类似于 3.0.3-SNAPSHOT。

我的问题是:在发布供其他人使用时,库和 Maven 的约定是 SNAPSHOT 还是非 SNAPSHOT?

0 投票
3 回答
937 浏览

maven - 在 Maven 反应器构建中包含父项目

我正在尝试创建一个聚合 POM,以从头开始构建我们所有的项目。假设我有一个父项目和 2 个代码项目。这些都在不同的源代码树中。

家长:

项目一:

项目B:

现在我正在尝试创建一个单独的聚合器 POM 来将所有这些构建在一起,如下所示:

mvn clean installaggregator项目失败,因为反应堆找不到<parent>两个代码项目的。原因很明显 - 该parent项目是反应器的一部分,因此工件在构建开始时不存在。

有没有办法实现这个反应堆构建?