我是 Maven 新手,并试图了解如何发布我的项目。我在 svn 中有以下项目设置:
trunk
|-deployer
| |-pom.xml
|-webapp
| |-pom.xml
|-utils
|-pom.xml
在开发webapp时,我总是想针对 utils 的最新快照版本进行开发,因此我通过以下方式在 webapp/pom.xml 中声明了对 utils 的依赖:
com.company utils 1.0-SNAPSHOT
Webapp 本身目前的版本也是 1.0-SNAPSHOT。它的 pom.xml 有声明:
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Sample Webapp</name>
所以一切都很好,但现在我想发布我的软件。在部署程序中,我在 pom.xml 中有以下内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>deployer</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>Project Release</name>
<modules>
<module>externals/webapp</module>
</modules>
<properties>
<url.svn>http://<my-server>/<project>/trunk</url.svn>
</properties>
<scm>
<connection>scm:svn:${url.svn}</connection>
</scm>
<build>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.3</version>
<configuration>
<tagBase>
http://<my-server>/<project>/tags
</tagBase>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>Releases</id>
<name>Releases</name>
<url>http://<nexus-server>/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>Snapshots</id>
<name>Snapshots</name>
<url>http://<nexus-server>/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>
在部署程序文件夹本身中,我有一个名为“externals”的文件夹,它设置了一个 svn-externals 来检查我的 webapp 项目(我添加了这个,因为 maven 抱怨找不到它),所以我的模块路径应该是正确的。
问题
1.)我想发布我的网络应用程序的一个版本,但是当我在我的部署器项目中运行一个mvn release:prepare
和mvn release:perform
时,我唯一有形的输出是我在 svn 中标记的主干和一个上传到我的 nexus 存储库的 pom。这是有道理的,因为我的部署器工件包装是“pom”类型,但它也没有完成让我与我的 webapp 发生战争的工作(我应该在这里注意,如果在 webapp 项目中单独发布不过,我会得到战争)。我需要发布多个模块,所以我认为我可以使用部署程序项目中的 Maven 聚合来完成此任务,但它似乎不起作用。
2.)有没有更好的方法来实现我想要做的事情?
感谢您提供的任何见解。