我有一个大的Maven(第谷)项目女巫约有400个插件.
我们在每个POM文件中指定了应用程序版本.
有没有办法如何为所有POM指定版本:仅在一个地方?
我希望有人会这样想:
<properties>
<buildVersion>1.1.2-SNAPSHOT</buildVersion>
</properties>
....
<version>${buildVersion}</version>
Run Code Online (Sandbox Code Playgroud)
我们有父母pom.xml:
<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>build.parent</artifactId>
<version>1.1.2-SNAPSHOT</version>
<packaging>pom</packaging>
Run Code Online (Sandbox Code Playgroud)
然后在每个POM中引用父POM:
<parent>
<artifactId>build.parent</artifactId>
<groupId>company</groupId>
<relativePath>../build.parent/pom.xml</relativePath>
<version>1.1.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>artifact</artifactId>
<version>1.1.2-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
Run Code Online (Sandbox Code Playgroud) 我发现cherry-pick在某些情况下特别有用,例如,当我有一个feature1分支和一个test-feature1分支时,我想应用测试中发现的更正;或者换句话说,我想测试新功能,为此我需要在测试分支中使用这些新功能。
cherry-pick这里的好处是我可以选择我想在其他分支中应用的具体更改;也许合并整个分支并不有趣。
我在过去的项目中一直在使用它,但我认为这种做法会导致工作流程不一致。是cherry-pick-ing一个不推荐和可避免的做法?
我有一个为pom.xml(Maven)文件配置的自定义git合并驱动程序.
配置:
该.gitattributes文件:
pom.xml merge=pommerge
Run Code Online (Sandbox Code Playgroud)
和.gitconfig文件:
[merge "pommerge"]
name = A custom merge driver for Maven's pom.xml
driver = mergepom.py %O %A %B
Run Code Online (Sandbox Code Playgroud)
这非常适合解决此类文件中的冲突.不幸的是,这并没有解决pom.xml文件的所有问题.只有在主分支中更改pom.xml时才会在合并时调用此驱动程序(因此,我们称之为'git merge的分支) otherbranch')和我们想要合并的分支('otherbranch').
我们总是将我们的合并驱动程序用于pom文件,即使pom文件只在1个分支中更改,并且可以合并而不会发生冲突.
有没有办法在这种情况下强制我们的定制'pommerge'司机?
更新 我几乎尝试过任何事情,但没有运气.我甚至检查了git源代码并添加了更多的日志记录到代码并安装/ MAKE它以检查我是否能找出是否有一个特定的扩展点我可以以某种方式使用.但代码很难理解在哪种情况下遵循代码中的哪条路径,因此这种努力比解决方案产生更多的挫败感;)..
我可以使它工作的唯一方法,这不是解决方案,是在合并之前在两端(分支)更改文件..但这不是非常用户友好
我仍然希望有人提出天才解决方案或线索,这有助于我进一步应对这一挑战.
谢谢大家的时间!
我不是开发人员。在我们的一个项目中,由于很多票需要时间来完成,我们一直在挑选我们的提交,现在我们必须经常这样做。一位开发人员告诉我,应该避免挑选,因为它会使回购不稳定。这是什么意思,它如何使回购不稳定? 换句话说,采摘樱桃的负面后果是什么?