带有Svn:Externals和多模块项目的Maven发布插件
给出以下多模块项目示例:带有Svn:Externals和多模块项目的Maven发布插件,maven,maven-2,maven-release-plugin,Maven,Maven 2,Maven Release Plugin,给出以下多模块项目示例: aggr/pom.xml(版本1.0-SNAPSHOT) aggr/parent/pom.xml(版本2.0-SNAPSHOT) aggr/app/pom.xml(版本3.0-SNAPSHOT) aggr/comp1/pom.xml(版本4.0-SNAPSHOT) 其中,parent是任何其他pom的父级,而app的依赖项为comp1 通过release发布:准备/执行只要aggr文件夹在svn存储库(repository/trunk/aggr/parent.pom
- aggr/pom.xml(版本1.0-SNAPSHOT)
- aggr/parent/pom.xml(版本2.0-SNAPSHOT)
- aggr/app/pom.xml(版本3.0-SNAPSHOT)
- aggr/comp1/pom.xml(版本4.0-SNAPSHOT)
无法发布项目,因为未发布依赖项:父项:pom:2.0-SNAPSHOT
然后,存储库结构类似于
- repository/aggr/trunk/pom.xml
- repository/parent/trunk/pom.xml
- repository/app/trunk/pom.xml
- repository/comp1/trunk/pom.xml
<groupId>small.test</groupId>
<artifactId>parent</artifactId>
<version>2.0-SNAPSHOT</version>
<scm>
<connection>scm:svn:http://localhost/svn/small-test-ext/parent/trunk/</connection>
<developerConnection>scm:svn:http://localhost/svn/small-test-ext/parent/trunk/</developerConnection>
<url>http://localhost/svn/small-test-ext/parent/trunk/</url>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
</plugin>
</plugins>
small.test
父母亲
2.0-快照
scm:svn:http://localhost/svn/small-test-ext/parent/trunk/
scm:svn:http://localhost/svn/small-test-ext/parent/trunk/
http://localhost/svn/small-test-ext/parent/trunk/
org.apache.maven.plugins
maven发布插件
2.4.1
外部aggr-pom.xml
小型试验
父母亲
2.0-快照
small.test
aggr
1.0-快照
scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/
scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/
http://localhost/svn/small-test-ext/aggr/trunk/
父母亲
comp1
comp2
应用程序
外部app-pom.xml
<parent>
<groupId>small.test</groupId>
<artifactId>parent</artifactId>
<version>2.0-SNAPSHOT</version>
</parent>
<groupId>small.test</groupId>
<version>3.0-SNAPSHOT</version>
<artifactId>app</artifactId>
<packaging>jar</packaging>
<scm>
<connection>scm:svn:http://localhost/svn/small-test-ext/app/trunk/</connection>
<developerConnection>scm:svn:http://localhost/svn/small-test-ext/app/trunk/</developerConnection>
<url>http://localhost/svn/small-test-ext/app/trunk/</url>
</scm>
<dependencies>
<dependency>
<groupId>small.test</groupId>
<artifactId>comp1</artifactId>
<version>4.0-SNAPSHOT</version>
</dependency>
小型试验
父母亲
2.0-快照
小型试验
3.0-快照
应用程序
罐子
scm:svn:http://localhost/svn/small-test-ext/app/trunk/
scm:svn:http://localhost/svn/small-test-ext/app/trunk/
http://localhost/svn/small-test-ext/app/trunk/
小型试验
comp1
4.0-快照
谢谢
Konrad在当前项目中,您必须为每个项目运行
mvn:release
,因为您在不同的svn存储库中有项目或模块。如果您只想运行一个mvn:release
,您的存储库应该如下所示:
svn_repository: branches/
tags/
trunk/
parent
comp1
comp2
app
pom.xml
您的主要问题是没有为所有模块等使用相同的版本。此外,您可以显示pom文件吗?除此之外,为什么要使用外部创建多模块结构而不创建没有外部的真实结构?实际项目的模块和父级正在多个项目中使用。因此,我必须依赖外部,不能在整个项目中使用相同的版本。这不是一个真正的原因,因为如果你有一个多模块构建,你可以单独使用模块。因此,如果不将文件夹结构更改为单个SVN树而不是使用外部,则无法运行它。这正是我正在做的。谢谢你知道有没有一个插件自动调用release:prepare for all submodules(按正确的顺序准备所有子模块)?如果你的问题从2.0开始就处于推送阶段,他们添加了一个属性“DcommitByProject”,可以提交每个项目,这样子模块就可以工作了。我在根模块和子模块上执行此命令,mvn版本:prepare-DcommitByProject=true
svn_repository: branches/
tags/
trunk/
parent
comp1
comp2
app
pom.xml