首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven发布模式

Maven发布模式
EN

Stack Overflow用户
提问于 2012-09-05 20:41:51
回答 2查看 778关注 0票数 1

我是maven的新手,并试图了解如何发布我的项目。我在svn中设置了以下项目:

代码语言:javascript
复制
trunk
  |-deployer
  |    |-pom.xml
  |-webapp
  |    |-pom.xml
  |-utils      
       |-pom.xml

在开发webapp时,我总是希望针对最新的utils快照版本进行开发,因此我通过以下方式声明了webapp/头.xml中对util的依赖:

代码语言:javascript
复制
        com.company       utils       1.0-SNAPSHOT     

Webapp本身目前也是版本1.0-快照版本。这是pom.xml的声明:

代码语言:javascript
复制
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Sample Webapp</name>

所以一切都很好,但现在我想发布我的软件。在部署程序中,我在pom.xml中有以下内容:

代码语言:javascript
复制
<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:preparemvn release:perform时,我唯一能看到的输出就是我的主干,它用svn标记,一个pom上传到我的附件存储库。这是有意义的,因为我的部署人员工件打包是"pom“类型,但它也没有完成让我对我的webapp进行战争的工作(我在这里应该注意到,如果在webapp项目中单独发布一个do,我就会得到战争)。我需要发布多个模块,所以我想我可以使用部署程序项目中的maven聚合来完成这个任务,但它似乎不起作用。

2.)是否有更好的方法来实现我正在努力做的事情?

感谢您所能提供的任何见解。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-05 20:56:05

您应该针对您打算发布的每个模块运行maven版本插件。我从来没有见过有人有一个特殊的“部署者”模块来释放其他模块,这不是通常的做法。

通常,为了释放webapp模块,您将对webapp模块运行命令,而为了释放utils模块,您将运行针对utils模块的命令。

如果您有一个将webapp和util结合在一起的父模块,那么我相信您可以运行相应的发布命令。

票数 2
EN

Stack Overflow用户

发布于 2012-09-05 22:23:57

正如matt b所说,在最上面的pom添加一个maven发布插件条目可能会做你想做的事情。如果您想要将几个工件收集到一个适当的发行包中,您希望为此创建一个模块,但是您需要查看maven程序集插件。它可以将各种jars (来自模块或外部依赖项)和资源收集到目录、zip文件或类似的目录中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12289425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档