2012-05-28 76 views
0

我想使用maven release插件首次发布多模块maven项目。我在发布时面临一个问题:准备步骤,因为我有SNAPSHOT依赖关系。发布maven项目自动删除SNAPSHOT依赖关系

<project ...> 

    <parent> 
     <artifactId>project</artifactId> 
     <groupId>ccc.aaa.bbb</groupId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <artifactId>common</artifactId> 
    <packaging>pom</packaging> 
    <name>common</name> 

    <modules> 
    <module>daoModule</module> 
    <module>configModule</module> 
    <module>exceptionModule</module> 
    </modules> 

    <scm> 
    ...  
    </scm> 
    <distributionManagement> 
     <repository>...</repository> 
     <snapshotRepository>...</snapshotRepository> 
    </distributionManagement> 
</project> 

和模块扩展此作为其父:

<project ...> 
<parent> 
    <artifactId>common</artifactId> 
    <groupId>ccc.aaa.bbb</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 

<artifactId>exceptionModule</artifactId> 
    <name>exceptionModule</name> 

<build> 
     ... 

插件改变神器0.0.1-SNAPSHOT版本的发行版本0.0.1,并创建新的快照版本ID 0.0.2-SNAPSHOT。

¿是否有任何方法可以自动将父母的版本从0.0.1-SNAPSHOT更改为0.0.1 - 即将创建的版本 - ?

谢谢。

回答

1

从包含所有你感兴趣的模块聚合项目水平做release:prepare时,它应该工作。所以,你commonproject文物和所有模块应立即被释放。也可以看看autoVersionSubmodules开关做少一点打字。

+0

在做发布时:从聚合器项目准备是因为发布失败的第二步:准备检查是否没有SNAPSHOT依赖项[链接](http://maven.apache.org/plugins/maven -release-plugin/examples/prepare-release.html)。如果在创建工件时父级的版本属性不是继承,我将检查autoVersionSubmodules。 Thx – bleras

+0

是的,我知道它,但这些'SNAPSHOT'依赖由模块内部的模块继承,应该解决得更聪明一点。为我工作了好几年。我的大部分项目都是多模块,我通常以这种方式释放它们。一个要求:所有这些项目必须在同一个建造反应堆内一次建造! –

+0

你说得对,我的问题是我没有在同一个反应器中的所有项目,因为我想避免内存问题。我已经做了一些测试,在同一个反应堆内构建项目,并且插件工作正常。我会尝试找到一些手动解决方法......感谢您的帮助! – bleras