给定以下示例多模块项目:
其中 parent 是任何其他 pom 的父级,并且应用具有 comp1 的依赖项。
通过发布发布:只要aggr文件夹在svn存储库中具有相同的结构(存储库/主干/aggr/parent.pom,...),准备/执行就可以正常工作。
现在,当我想使用同一个项目,但使用svn:externals时,发布插件不工作,声明comp1:
由于未发布的依赖项而无法发布项目:parent:pom:2.0-SNAPSHOT
存储库结构类似于
aggr文件夹使用指向模块中继的外部文件,因此签出的工作副本看起来像上面一样。
为什么Maven以不同的方式处理基于外部的模块,有没有办法克服这个问题?
编辑:svn: externals项目的pom-Files。与其他项目的pom-Files唯一的区别是scm标签。在其他非外部项目中,只有聚合器具有scm标签。
外部父-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>
外部 aggr-pom.xml small.test parent 2.0-SNAPSHOT
<groupId>small.test</groupId>
<artifactId>aggr</artifactId>
<version>1.0-SNAPSHOT</version>
<scm>
<connection>scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/</connection>
<developerConnection>scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/</developerConnection>
<url>http://localhost/svn/small-test-ext/aggr/trunk/</url>
</scm>
<modules>
<module>parent</module>
<module>comp1</module>
<module>comp2</module>
<module>app</module>
</modules>
外部应用程序-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>
谢谢,康拉德
在您当前的项目中,您必须为每个项目运行mvn:发布
,因为您在不同的svn存储库中有项目或模块。如果您只想运行一个mvn:发布
,您的存储库应该如下所示:
svn_repository: branches/
tags/
trunk/
parent
comp1
comp2
app
pom.xml
我有一个Maven项目,包含几个模块,其结构类似于: 我已经在parent在
关于maven项目结构,我有两个问题: 1)我正在创建一个maven多模块项目,并且想知道是否可以将模块的所有公共依赖项放在父POM中?这是正确的做法吗? 2)如果我正在创建一个包含所有web.xml和JSP文件的maven webapp项目,那么web控制器、侦听器和模型对象应该驻留在哪里?在一个单独的maven jar项目中还是在同一个webapp项目中?
我正在尝试创建一个多模块spring boot项目(Struts2/Ibatis项目的重写),我希望如下所示: 我如何设置每个pom,以便: 非常感谢。
问题内容: 我有学习的背景和思想。 我喜欢使用的其中一项功能是可以将项目制作为多Maven模块。例? 令人高兴的是,每个模块都可以具有自己的依赖性,并且可以独立测试它们,而不用运行一个整体应用程序。 我们如何实现类似的东西,或者它的生态系统? 问题答案: 你绝对可以做到的。这被称为SBT Multi-Project build。您可以使用以下内容定义一个主项目和多个子项目(来自上面的docs链接)
我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并