我有一个标准的Java应用程序,可以处理REST和UI调用。我创建和管理应用程序版本(major.minor.release.build)的最佳方式是什么?我在堆栈中使用Subversion,Maven,Bamboo(连续构建)和Spring。我希望这个版本与SVN,Bamboo和Maven捆绑在一起。并且,希望能够在启动时记录版本 - 可能使用一些Spring bean。
必须有一个框架/模式来帮助解决这个问题。我宁愿不自己动手。
谢谢!
答案 0 :(得分:4)
为什么不使用Semantic Versioning?这是大多数人现在所期望的,它定义得很好,而且它就在那里。对我来说足够好了。
Maven有一个发布插件。这是首先设置的熊,但一旦它正常工作它运作良好。它确保了所有细节,确保所有内容都经过彻底检查,正确标记,以及版本号的魔力。这不是一个值得期待的问题,但至少现在已经做好了。设置一些maven存储库是值得的。我们使用Nexus并且可以推荐它,但我也听到过神秘的东西。
在测试过程中,我们不依赖于Maven版本太多,但在构建号,我们把在网页上和类似文物离散的地方,所以我们可以快速地确定它的确切建造我们谈论。我们使用hudson在环境变量中提供内部版本号,但Bamboo也必须提供。过滤器复制功能使其非常简单。
Hudson用版本号标记VCS(我们使用git,但这无关紧要),maven release插件标记版本。
答案 1 :(得分:1)
您可以使用maven build-number插件(http://mojo.codehaus.org/buildnumber-maven-plugin/)在工件中包含SCM修订号,例如在过滤的资源中,例如属性文件。
如果您使用Artifactory作为二进制仓库,那么它还可以使用内部版本号标记您的二进制工件,并具有从工件到创建它的CI服务器构建的完全可跟踪性。目前,Hudson, TeamCity and Bamboo支持此功能。