Java Maven父POM的源代码版本控制
我管理一个Maven POM项目,该项目(与POM项目一样)由一个文件组成:Java Maven父POM的源代码版本控制,java,maven,version-control,pom.xml,build-automation,Java,Maven,Version Control,Pom.xml,Build Automation,我管理一个Maven POM项目,该项目(与POM项目一样)由一个文件组成:POM.xml。有多个其他项目从该POM继承设置。父pom不起聚合器的作用;其中没有定义任何模块 由于POM项目的发布周期和版本历史与依赖于它的项目不同,因此我认为将其放在单独的SCM存储库中是合乎逻辑的。其思想是在提交时触发自动构建作业,然后将新POM发布到中央工件库(Nexus)。这导致了这样一种情况:我有一个Git回购协议和一个文件 问题:这是处理POM项目源代码版本控制的正常/理想方式吗?一个通用的gloal(或
POM.xml
。有多个其他项目从该POM继承设置。父pom不起聚合器的作用;其中没有定义任何模块
由于POM项目的发布周期和版本历史与依赖于它的项目不同,因此我认为将其放在单独的SCM存储库中是合乎逻辑的。其思想是在提交时触发自动构建作业,然后将新POM发布到中央工件库(Nexus)。这导致了这样一种情况:我有一个Git回购协议和一个文件
问题:这是处理POM项目源代码版本控制的正常/理想方式吗?一个通用的gloal(或企业)父POM被视为一个独立的产品,它本身就是一个工件,具有自己的生命周期和CI作业(将其发布到Maven存储库,如您的Nexus)同样,它也有自己的版本控制存储库
此外,它也可能不是一个只有一个文件(essensialpom.xml
文件)的存储库,而是提供更多的资源。例如,一个站点
,其site.xml
文件指定了一个附加的报告或部分。对于git存储库,它还应该提供一个有良好文档记录的README.md
文件
根据经验,由于许多不同的项目都使用全局Maven父级POM,因此最好注意其版本控制和发行说明。因此,我建议采取以下措施:
- 包含以下
配置的site.xml
文件夹(作为示例):site
下的另一个site
文件夹,提供每个版本的发行说明。例如,从上面的markdown
中,将获取以下文件:href
,提供有关其发布的信息,然后将在POM的Maven站点中结束release-notes-0.0.1.md.vm
pom.xml
文件。因此,它应该始终拥有自己的版本控制(本例中为git)存储库
补充说明:
- 全局父POM通常应用
后缀(例如,)。虽然不是一个标准,但它是一个事实约定,建议遵循-parent
- 最好按照POM部分的说明进行操作
- 根据个人经验,避免使用
版本:最好使用一个公共父POM的多个次要(但固定)版本,而不是不稳定或可能影响快照
版本:它是全局父POM,其目标是提供治理和公共最小配置,它不应该带来不稳定李>快照
我们的想法是使用maven插件jgit flow插件,使用Jenkins和这个插件,我们创建了整个管道来自动化这个过程。是的。因为这个pom代表一个被其他人使用的工件。。。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/DECORATION/1.4.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0
http://maven.apache.org/xsd/decoration-1.4.0.xsd">
<body>
<menu ref="reports" />
<menu name="Release Notes">
<item name="0.0.1" href="release-notes-0.0.1.html" />
</menu>
</body>
</project>