问题标签 [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.

0 投票
0 回答
54 浏览

maven - 为什么不是元数据添加到由 flatten-maven-plugin 生成的子 pom 文件中?

flatten-maven-plugin(v 1.0.1) 生成的输出 pom 文件包含我需要在 OSSRH 上发布的所有元数据元素,当<flattenMode>ossrh</flattenMode>指定时,或者使用<pomElements>. 但是,我的项目中的扁平子 pom 缺少 OSSRH 所需的一个元素:项目<name>。扁平的父 pom 确实包含<name>.

我的原始问题在如何解决父 pom 依赖问题中进行了描述:无法读取工件描述符;找不到神器?,这有效。最终的解决方法在评论中进行了描述,但我想知道这种解决方法是否真的有必要(或者,它甚至可能是一个错误,因为似乎不太可能在没有问题的情况下复制所有其他元数据元素)。

0 投票
0 回答
259 浏览

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 以单独保留该属性而不解决它。

0 投票
2 回答
510 浏览

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 也会奇怪地显示:

<剪辑>

0 投票
1 回答
618 浏览

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 和revisionCI 友好构建的属性:

父级 (foo-build) 管理一个外部依赖项:

bom (foo-dependencies) 管理 foo 依赖项:

我希望 bom 的扁平化 pom 仅包含已解析的 foo 依赖项,而没有由父级(foo-build)管理的依赖项,如下所示:

你必须如何配置 flatten-maven-plugin 来实现这一点?

我已经试过<flattenMode>bom</flattenMode>了,但是扁平化的 pom 并没有解决这些版本:

使用以下配置

扁平化的 pom 包含父级的托管依赖项:

0 投票
1 回答
151 浏览

maven - 跨项目继承中的Maven父版本${revision}扩展

背景:
我正在使用 maven 3.5 并且有一个“主”聚合器项目,它有 4 个模块(同时使用聚合和继承)。
我还有 30 个独立的子项目,包括单模块和多模块,每个子项目都继承自这 4 个模块之一。

问题:

我想在子项目${revision}的标签中使用,但我观察到的是 maven 在扩展之前尝试解析父项(到 中指定的值)。这导致 maven 无法解析父项目,因为它正在寻找父项目的文字“${revision}”版本。<parent><version>${revision}<properties><revision>

问题

  • ${revision}对跨项目继承不起作用 是真的吗?

  • 有什么解决办法吗?(同时试图避免使用 maven-versions 插件)

注意:我可以${revision}在单个多模块项目中毫无问题地使用 - 这不是问题。

0 投票
2 回答
1972 浏览

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):

0 投票
2 回答
297 浏览

maven - 有没有办法在 Maven pom.xml 中插入所有 ${project.version} 变量?

我需要用${project.version}pom.xml 中的实际值替换所有出现的 。

我可以用 . 来做到这一点maven-flatten-plugin,但这将重写整个 pom.xml 而不仅仅是替换project.version唯一的。

由于我想使用jgitver-maven-plugin我不能使用resolveCiFriendliesOnlyflatten 插件的模式。

有没有一种简单的方法可以只替换整个 pom.xml 中的一个变量?flatten 插件中是否有另一个(隐藏的)选项可以做到这一点?

0 投票
1 回答
182 浏览

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,不会减少依赖关系并且所有属性都没有正确替换。

我的问题是:

  1. 这个设计的意义何在?为什么在所有插件都明确替换它时使用半生不熟的 pom.xml?

  2. 如何覆盖此行为,以便始终生成和使用 pom.xml 的最终版本,而不管请求的 maven 目标如何?

更新1:目前我正在使用一个简单的规避方法:

我不是 shell 脚本的忠实拥护者,我认为这背叛了 JVM 社区所珍视的与平台无关的壮举。因此,如果您有更好的解决方案,请在此处发布,我会根据受欢迎程度接受它。

非常感谢您的意见

0 投票
2 回答
171 浏览

spring-boot - flatten-maven-plugin 部署多模块项目

父项目maven

孩子 1 个模块

孩子 2 模块

module1是springboot项目,需要打包成可执行jar,module2需要部署到nexus 现在,module2上传到nexus成功了,但是通过java -jar无法启动module1