我是maven的新手,并试图了解如何发布我的项目。我在svn中设置了以下项目:
trunk
|-deployer
| |-pom.xml
|-webapp
| |-pom.xml
|-utils
|-pom.xml在开发webapp时,我总是希望针对最新的utils快照版本进行开发,因此我通过以下方式声明了webapp/头.xml中对util的依赖:
com.company utils 1.0-SNAPSHOT Webapp本身目前也是版本1.0-快照版本。这是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.)我想发布我的web应用程序的一个版本,但是当我在部署程序项目中运行一个mvn release:prepare和mvn release:perform时,我唯一能看到的输出就是我的主干,它用svn标记,一个pom上传到我的附件存储库。这是有意义的,因为我的部署人员工件打包是"pom“类型,但它也没有完成让我对我的webapp进行战争的工作(我在这里应该注意到,如果在webapp项目中单独发布一个do,我就会得到战争)。我需要发布多个模块,所以我想我可以使用部署程序项目中的maven聚合来完成这个任务,但它似乎不起作用。
2.)是否有更好的方法来实现我正在努力做的事情?
感谢您所能提供的任何见解。
发布于 2012-09-05 20:56:05
您应该针对您打算发布的每个模块运行maven版本插件。我从来没有见过有人有一个特殊的“部署者”模块来释放其他模块,这不是通常的做法。
通常,为了释放webapp模块,您将对webapp模块运行命令,而为了释放utils模块,您将运行针对utils模块的命令。
如果您有一个将webapp和util结合在一起的父模块,那么我相信您可以运行相应的发布命令。
发布于 2012-09-05 22:23:57
正如matt b所说,在最上面的pom添加一个maven发布插件条目可能会做你想做的事情。如果您想要将几个工件收集到一个适当的发行包中,您希望为此创建一个模块,但是您需要查看maven程序集插件。它可以将各种jars (来自模块或外部依赖项)和资源收集到目录、zip文件或类似的目录中。
https://stackoverflow.com/questions/12289425
复制相似问题