使用 NPaday 和 Maven 发布插件进行版本控制

Posted

技术标签:

【中文标题】使用 NPaday 和 Maven 发布插件进行版本控制【英文标题】:Versioning with NPanday and Maven Release Plugin 【发布时间】:2011-07-15 18:40:16 【问题描述】:

我正在开发一个使用 Maven 和 Npanday 的 C# .NET Web 服务项目。我们也想使用发布插件,但我发现了一个小版本问题。

当您进行构建时,NPanday 将(方便地)使用 POM 文件中的版本号更新 AssemblyInfo.cs 文件,但它不会提交对 SVN 的更改(我也不一定希望这样做)。

发布插件不知道AssemblyInfo.cs(我也不希望它知道)。但这意味着我的 AssemblyInfo.cs 和 POM 版本在发布操作期间会不同步。

例如,假设我使用mvn release:branch 从主干创建一个 2.0.x 分支。在分支之前,POM 和AssemblyInfo.cs 可能都位于主干中的 2.0.0-SNAPSHOT,因此分支看起来与我预期的一样。但在更新后的主干中,POM 版本已更新(例如 2.1.0-SNAPSHOT),但 AssemblyInfo.cs 仍为 2.0.0-SNAPSHOT。

这不是一个大问题,因为主干上的下一个 mvn compile 将更新 AssemblyInfo.cs 并且有人会提交它。但是release:prepare 更糟糕,因为从分支创建的标签在 POM 中具有正确的版本(例如 2.0.0),但 AssemblyInfo.cs 仍然显示 -SNAPSHOT。当 release:perform 运行时,NPanday 将更新AssemblyInfo.cs 文件,但随后该标签有一个浮动修改。

有谁知道用发布插件纠正这个问题的方法吗?我当然可以手动创建正确的分支/标签或编写自定义工具。或者我可以保持原样,说“AssemblyInfo.cs 文件不是最终版本源,POM 是。”但我更喜欢两全其美。

【问题讨论】:

好问题!我会记住这一点!我目前正在为 Maven Release + Npanday 构建一个展示。一旦我在那里解决了问题,我会回来回答。在这里找到展示:github.com/lcorneliussen/NpShowcase 【参考方案1】:

我会让 Npanday 为你生成 AssemblyInfo.cs - 然后你避免签入带有版本的东西......

Visual Studio 可以在没有程序集信息的情况下正常工作...版本是 0.0.0.0,然后 :-) - 我就是这样做的。

实际上,NPanday 正在“打破” maven 规则 - 构建不应该摆弄原始文件,而应该只是更新 /target 中的内容...

【讨论】:

以上是关于使用 NPaday 和 Maven 发布插件进行版本控制的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse中使用JRebel实现项目热部署(Maven插件版)

Eclipse中使用JRebel实现项目热部署(Maven插件版)

Java学习01-使用maven插件tomcat搭建web maven项目

插件需要 Maven 3.0 版

netbeans 11.0 版是不是有休眠插件?

GWT 2.1 和 Codehaus Maven 插件