2009-10-06 59 views
6

我正在将一个ant项目转换为maven项目。这个项目与我通常转换的项目不同,因为它有非常频繁的版本,通常每天8-10次。针对具有小而频繁版本的maven项目的版本控制

通过发布我的意思是导致罐子被打包纳入生产环境。这个项目是一个之一,所以它没有发布的API,它只会消耗它。对于其他两个项目而言,它最多也是一个运行时依赖项。

我想有一个版本方案,其中:

  • 很容易而不强制开发商想什么版本号分配给项目,自号是毫无意义的部署;
  • 很容易将此项目的最新版本作为依赖项包含在内,而不会不断增加依赖版本;

最有可能的依赖版本将不会是一个-SNAPSHOT,因为这与我们使用的其他项目的maven-release-plugin冲突,但我很开放的建议。

回答

5

其实,你可以使用x-SNAPSHOT版本,仍然使用maven-release-plugin。只需使用mvn release:preparemvn release:perform之前准备释放和从x-SNAPSHOT更改劲歌版本到新版本(你会被提示版本使用)。你可以查看这个introduction到maven-release-plugin,快速浏览release:preparerelease:perform

然后,包括但不断更新的依赖版本的最新版本,你可以在下面的代码片段使用依赖范围等,其中我们指定了一系列的Junit 3.8 - Junit的4.0:之前或之后

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>[3.8,4.0)</version> 
    <scope>test</scope> 
</dependency> 

一个版本逗号不是必需的,并且意味着+/-无穷大。例如,[4.0,)表示大于或等于4.0的任何版本。

就个人而言,我不喜欢使用依赖范围那么多,因为我发现它会导致重复性建设问题,使构建更加脆弱。

但是你可能有很好的理由来使用它们。

+0

感谢您的回答。我可能最终会这样做,但我仍然遇到这样的问题:版本和发行版本与这个项目无关 - 它处于不断变化的状态。 –

+0

据我所知,在这里有两个选择:1.使用快照版本(适用于连续流),忘记发布插件,但我不会这样做与生产代码2.使用发布插件和增量版本(或maven不会选择更新)。我不知道是否有解决方案在中间遇到。 –

+0

+1版本系列和发布插件,请参阅此答案以获取更多选项:http://stackoverflow.com/questions/30571/how-do-i-tell-maven-to-use-the-latest-version-对的一依赖性/ 1172371#1172371 –