问题标签 [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.
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]
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(最新)
maven - 强制执行模块的构建顺序
我有带有模块的 Maven 项目module1
,module2
等等module3
。我在父级的 pom.xml 中定义了这些模块,看起来像
默认情况下,“maven-reactor”通过应用使用多个模块指南中描述的规则对模块 进行排序,但是,我不想使用 maven 对模块进行排序,而是使用我在父 pom.xml 中提供的顺序。
maven - 如果子模块是独立版本控制的,如何安排 maven reactor 的依赖管理?
我们有一个反应堆 pom,它的子模块是独立版本的,即。子模块声明它自己的版本,独立于主 pom 的版本。然而,两个子模块之间存在依赖关系。应该如何将此依赖项配置为始终使用反应器 pom 的实际模块声明的版本?
我希望我可以在根 pom 中设置依赖管理并使用一些隐式属性来确定子模块的版本,但我能找到的最好的选择是:
或者干脆
所以根 pom 中的依赖管理看起来像这样:
看起来不可靠,因为添加新模块或依赖项时反应器顺序可能会发生变化。
也许这种使用场景是设计不鼓励的,然后我想知道为什么。
编辑:正如评论中所建议的,在父 POM 中声明具有子版本的全局属性可能是较新版本的 Maven 的一个选项。然而,我希望看到一些关于更广泛后果的分析,如工作流、发布、目录和存储库设置、一些插件使用(例如版本插件)等。例如,我认为这种方法的直接后果是我必须发布每当发布任何子模块时,父模块。虽然这是可行的,但它会影响拥有独立版本控制的最初想法。
maven - 使用 maven -pl 选项和从模块级别运行 maven 有什么区别?
有没有区别
和
在我看来,这两个动作的结果应该是一样的。
然而,每种情况下的行为似乎都不同:前一种似乎更广泛;后者结束得更快 - 我试图理解为什么会这样。
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/。不存在
有谁知道该怎么做才能完成这项工作?
在相关插件配置下方:
maven - 如何在反应堆 POM 中覆盖模块 POM 的“distributionManagement”?
我有一个 maven 项目,它基本上是围绕其他几个独立项目的反应堆 pom。
- 根
- 模块1
- 子模块1
- 子模块2
- 模块2
- 子模块3
- 子模块4
- 模块1
这些submoduleX
模块继承自各种父 POMS(例如submodule1
,具有不同的父 POMS submodule2
)并且不受我的控制。但是我想将我的项目的工件部署到某个存储库。因此,在我的根反应器 pom 中,我指定了一些<distributionManagement>
设置,其中配置了工件的存储库。
但是,当mvn deploy
在 reactor POM 上运行时,子模块会尝试将其工件部署到从其父 pom 继承的存储库中,而不是在根 reactor pom 中指定的存储库。有什么方法可以从根反应器 pom 中覆盖它,还是我在这里不走运?
maven - Maven分层依赖搜索
所以我有一个问题,那就是 - Maven 似乎忽略了依赖关系,即使它们应该在层次结构中可见。
我有以下项目层次结构:
parent
--projA
--sub-parent1
----projB
----projC
所有级别都通过<parent>
标签链接。
sub-parent1
有projB
并projC
声明为模块,没有声明依赖项。但projB
对projA
. 并且构建整个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 构建这样的多级结构,在我的情况下,它将是父级(所以父级是当前目录)和地址模块,您需要通过父级的相对路径构建。这导致:
顺序将是:
maven - SNAPSHOT 或非 SNAPSHOT 是库和 Maven 在发布供其他人使用时的约定吗?
我将其从主干与分支发布问题中排除,因为这是一个单独的问题。
假设您已经完成了开发迭代,并且正在推出一个版本供其他人在他们的项目中使用。
现在我团队的一些成员说:
SNAPSHOT 用于在您的团队中进行迭代 - 非 SNAPSHOT 用于实际发布。
但是当我查看反应器插件和相关评论时 - 它似乎是相反的:
你只应该发布 SNAPSHOT 版本。这意味着您的版本号类似于 3.0.3-SNAPSHOT。
我的问题是:在发布供其他人使用时,库和 Maven 的约定是 SNAPSHOT 还是非 SNAPSHOT?
maven - 在 Maven 反应器构建中包含父项目
我正在尝试创建一个聚合 POM,以从头开始构建我们所有的项目。假设我有一个父项目和 2 个代码项目。这些都在不同的源代码树中。
家长:
项目一:
项目B:
现在我正在尝试创建一个单独的聚合器 POM 来将所有这些构建在一起,如下所示:
mvn clean install
上aggregator
项目失败,因为反应堆找不到<parent>
两个代码项目的。原因很明显 - 该parent
项目是反应器的一部分,因此工件在构建开始时不存在。
有没有办法实现这个反应堆构建?