当前位置: 首页 > 知识库问答 >
问题:

Maven版本构建在项目-工件版本号上

严恩
2023-03-14

我有一个具有以下结构的maven项目

Project
- pom.xml
--- Module1
--- pom.xml for Module1
--- Module2
--- pom.xml for Module2
--- Module3
--- pom.xml for Module3
------- Module31
------- pom.xml for Module31
------- Module32
------- pom.xml for Module32

即Project有它的pom.xml(作为pom的包)并有模块。每个模块都有一个 …在单个ModuleX pom.xml文件中的 节中,可以将其设置为“project”的工件(在根pom.xml中定义),也可以将其设置为任何其他project2/project3/projectn工件。

现在,由于这个原因,我看看如果Project1的根pom.xml设置为0.0.1-snapshot,并且如果我想创建一个版本候选(非快照)构建“0.0.1”,那么我希望所有模块都生成与Project的根pom.xml中设置的版本相同的工件。

我注意到,Module2pom.xml有一个父级,它是某个其他项目(对于ex:Project2),并且这个父级的版本id被设置为“0.0.7-snapshot”,并且Module2pom.xml(在project下)也有一些使用Project2的构件的依赖项。

对于Module3和Module32也存在相同的情况,其中 节具有不同的父级(设置为ProjectN,其中N可以是任何数字),并且依赖于这些或任何ProjectN项目的构件。

我的问题:

1。如果我创建了项目的0.0.1(非快照)构建,那么Maven将为根pom、模块1、模块2、模块3和模块31/32生成什么版本id工件?

2。如何确保Project的0.0.1版本--为其所有模块生成相同的版本#0.0.1(即使这些模块的 部分使用了不同的Project**n**,并且在 部分中设置了不同的/更新的 .. 值)。

多谢了。

共有1个答案

潘弘博
2023-03-14

看看maven-release-plugin,它确实是你想要的。release:prepare是关于验证和更新POM,为项目添加标签,并为下一个开发周期做好准备。release:perform是关于基于标记构建项目并将工件推送到远程存储库的。

 类似资料:
  • 问题内容: Java项目中系统内部版本号和版本号管理的当前最佳做法是什么?特别: 如何在分布式开发环境中系统地管理内部版本号 如何在源代码中维护版本号/可用于运行时应用程序 如何与源存储库正确集成 如何更自动地管理版本号和存储库标签 如何与持续构建基础架构集成 有很多可用的工具,并且ant(我们正在使用的构建系统)的任务将维护一个构建号,但是目前尚不清楚如何使用CVS,svn或类似的方法与多个并发

  • 问题内容: 我正在使用由maven2管理的Java Web应用程序。我们有时会进行一些更改,并希望发布新版本,当然还有新版本号。在首页(jsp)中,有类似 是否有可能,每次执行新发行版时,仅更改pom.xml中的内容,而该maven $ {project.version}会自动填充jsp中的版本号吗? 我尝试了Maven配置文件,但是它似乎不起作用。 有任何想法吗? 谢谢。 问题答案: 也许这很愚

  • 我正在阅读有关maven versions插件的内容:http://mojohaus.org/versions-maven-plugin/examples/advanced-dependency-versions.html 对于这个目标:“versions:use-next-releases在pom中搜索所有非快照版本,这些版本已经是一个较新的版本,并用下一个版本替换它们。”

  • 我试图用maven通过命令行下载一些工件。我只知道工件的基本版本,但是它们在nexus存储库中有一个单独的时间戳。 例如: 工件具有以下坐标。 我想像这样下载工件: 我在文档中找到了选项,但这只会将下载的工件与基本版本一起保存。 编辑: 问题是,我只知道一个工件的基本版本,例如3.0.0-SNAPSHOT,当我尝试像上面一样从nexus下载它时,它失败了,因为nexus中的版本带有时间戳。 mav

  • 问题内容: 我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。 Module1使用Sqlline取决于 jline 2.10 Module2使用OtherLib取决于 jline 0.9.94 并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而M

  • 有没有一种方法可以使用或类似的东西来避免在两个POM中都有?