问题标签 [flatten-maven-plugin]
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.
maven - 为什么不是元数据添加到由 flatten-maven-plugin 生成的子 pom 文件中?
flatten-maven-plugin(v 1.0.1) 生成的输出 pom 文件包含我需要在 OSSRH 上发布的所有元数据元素,当<flattenMode>ossrh</flattenMode>
指定时,或者使用<pomElements>
. 但是,我的项目中的扁平子 pom 缺少 OSSRH 所需的一个元素:项目<name>
。扁平的父 pom 确实包含<name>
.
我的原始问题在如何解决父 pom 依赖问题中进行了描述:无法读取工件描述符;找不到神器?,这有效。最终的解决方法在评论中进行了描述,但我想知道这种解决方法是否真的有必要(或者,它甚至可能是一个错误,因为似乎不太可能在没有问题的情况下复制所有其他元数据元素)。
maven - 如何告诉 flatten-maven-plugin:1.0.1 离开 ${project.basedir} 在生成 flatten pom 时不要使用修复字符串来解决它
我正在使用 flatten-maven-plugin:1.0.1 来解决我的依赖版本。
但它引入了另一个问题。
在我的 pom 中我使用
扁平化的 pom 用修复字符串替换了 ${project.basedir},当其他人使用扁平化的 pom 时,它是不可移植的。
您能否让我知道我是否可以配置 flatten-maven-plugin 以单独保留该属性而不解决它。
java - 如何在没有为依赖项生成可用 pom.xml 的父 pom 的情况下从外部为我的 jar 设置版本
如何在没有父 pom 的 jar 项目的 pom.xml 中外部定义版本标记?
我使用了 properties-maven-plugin 和 flatten-maven-plugin 来真正接近。由于 properties-maven-plugin 使用值替换来设置版本,因此部署的结果 pom.xml 具有不可用的版本。flatten-maven-plugin 解决了依赖版本的问题,但似乎没有解决主要工件的版本。该代码似乎确实可以正确构建和命名 jar。
我查看了https://maven.apache.org/maven-ci-friendly.html并了解了 ${revision},但那里的示例似乎包括父 pom。
我希望有人在不使用父 pom 的情况下找到了解决方案。如果没有解决方案,我想考虑这是对其中一个插件的功能请求,但我想先在这里尝试,然后再提交这样的请求。
这是我可以提供的最简单的配置来演示我的问题。
pom.xml
测试属性
src/main/java/testgroup/test/App.java
结果 .flattened-pom.xml
我希望 .flattened-pom.xml 中的版本是 1.2,而不是 ${major}.${minor}
所以,我不确定这是我做错了什么,还是某个插件中的某种错误。例如,即使是 Maven 也会奇怪地显示:
<剪辑>
maven - Flatten Plugin:解决bom的依赖管理不继承
我为这个问题创建了一个示例项目:https ://github.com/robeatoz/flatten-resolve-dependency-management-without-inherited
给出以下项目结构:
- foo-build作为所有模块的父级
- foo-module-a作为子模块
- foo-module-b作为子模块
- foo-module-c作为子模块
- 作为 bom的 foo 依赖项
我在所有模块中使用了 flatten-maven-plugin 和revision
CI 友好构建的属性:
父级 (foo-build) 管理一个外部依赖项:
bom (foo-dependencies) 管理 foo 依赖项:
我希望 bom 的扁平化 pom 仅包含已解析的 foo 依赖项,而没有由父级(foo-build)管理的依赖项,如下所示:
你必须如何配置 flatten-maven-plugin 来实现这一点?
我已经试过<flattenMode>bom</flattenMode>
了,但是扁平化的 pom 并没有解决这些版本:
使用以下配置
扁平化的 pom 包含父级的托管依赖项:
maven - 跨项目继承中的Maven父版本${revision}扩展
背景:
我正在使用 maven 3.5 并且有一个“主”聚合器项目,它有 4 个模块(同时使用聚合和继承)。
我还有 30 个独立的子项目,包括单模块和多模块,每个子项目都继承自这 4 个模块之一。
问题:
我想在子项目${revision}
的标签中使用,但我观察到的是 maven 在扩展之前尝试解析父项(到 中指定的值)。这导致 maven 无法解析父项目,因为它正在寻找父项目的文字“${revision}”版本。<parent><version>
${revision}
<properties><revision>
问题
${revision}
对跨项目继承不起作用 是真的吗?有什么解决办法吗?(同时试图避免使用 maven-versions 插件)
注意:我可以${revision}
在单个多模块项目中毫无问题地使用 - 这不是问题。
maven - Maven flatten 插件不工作不能代替我的版本属性
出于某种原因,当我执行 mvn install 并检查我的本地 repo 并查看那里的 pom 时,我没有看到 version 变量被替换为值。
我在属性中使用带有版本的父pom
它还包含 flatten 插件条目:
子pom使用${revision} 作为版本和 ${project.version} 的值作为maven推荐的依赖项:
在我“mvn install”之后查看本地 repo pom xml:
${revision} & ${project.version}不应该用实际数字代替吗?这不是使用 flatten 插件的全部内容吗?
我跟着这个 https://www.mojohaus.org/flatten-maven-plugin/examples/example-central-version.html
添加我的 mvn install 输出(跳过测试)(maven 版本 3.3.9):
maven - 有没有办法在 Maven pom.xml 中插入所有 ${project.version} 变量?
我需要用${project.version}
pom.xml 中的实际值替换所有出现的 。
我可以用 . 来做到这一点maven-flatten-plugin
,但这将重写整个 pom.xml 而不仅仅是替换project.version
唯一的。
由于我想使用jgitver-maven-plugin
我不能使用resolveCiFriendliesOnly
flatten 插件的模式。
有没有一种简单的方法可以只替换整个 pom.xml 中的一个变量?flatten 插件中是否有另一个(隐藏的)选项可以做到这一点?
maven - 在一个多模块的maven项目中,我可以制作一个模块来根据另一个模块的DependencyReducedPom计算传递依赖吗?
这似乎是一个简单的问题,但由于 maven 极其严格的生命周期和阶段范式,我发现它很困难:
假设在一个多模块的 maven 项目中,在各个阶段使用了几个插件来将 pom.xml 重写为更有效的版本,值得注意的例子是:
maven-shade-plugin(如果
<createDependencyReducedPom>
启用):当需要发布着色的 uber-jar 时,插件可以摆脱不需要包含的依赖项。始终在包阶段执行。flatten-maven-plugin:允许模块发布的 pom.xml 不再依赖于父级的 pom,方法是将属性引用替换为它们的实际值。可以在任何阶段执行,但为了保持与 maven-shade-plugin 的互操作性,它也仅限于包阶段(请参阅https://issues.apache.org/jira/browse/MSHADE-323)
当它们与其他模块结合使用时,maven reactor 构建引擎似乎经常摸索使用哪个版本的重写 pom 来计算传递依赖。理想情况下,应该使用打包阶段之后的最终版本。但是在最新的 maven 版本(3.6.3)中,它只能在重写之前使用 pom.xml,不会减少依赖关系并且所有属性都没有正确替换。
我的问题是:
这个设计的意义何在?为什么在所有插件都明确替换它时使用半生不熟的 pom.xml?
如何覆盖此行为,以便始终生成和使用 pom.xml 的最终版本,而不管请求的 maven 目标如何?
更新1:目前我正在使用一个简单的规避方法:
将第一个模块拆分为一个独立的 maven 项目,在打包阶段调用 maven-shade 和 flatten-maven 插件。(我没有直接证据,但我怀疑这就是重新打包的依赖项(如
spark-project.hive
https://mvnrepository.com/artifact/org.spark-project.hive/hive-common )是如何制作的,请参阅https://issues.apache.org/ jira/browse/SPARK-20202进行相关讨论)使用 shell 脚本依次编译/发布上述项目和主多模块项目。
我不是 shell 脚本的忠实拥护者,我认为这背叛了 JVM 社区所珍视的与平台无关的壮举。因此,如果您有更好的解决方案,请在此处发布,我会根据受欢迎程度接受它。
非常感谢您的意见
spring-boot - flatten-maven-plugin 部署多模块项目
父项目maven
孩子 1 个模块
孩子 2 模块
module1是springboot项目,需要打包成可执行jar,module2需要部署到nexus 现在,module2上传到nexus成功了,但是通过java -jar无法启动module1