Maven 快照及构建自动化

Posted BINGJJFLY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven 快照及构建自动化相关的知识,希望对你有一定的参考价值。

快照的作用

  一个团队工作负责应用程序的前端应用用户接口工程(app-ui.jar:1.0)),同时他们使用数据服务工程(data-service.jar:1.0)。

  现在负责数据服务的团队可能正在进行修正 bug 或者增强功能,并快速迭代,然后他们几乎每天都会 release 工程库文件到远程仓库中。

现在如果数据服务团队每天上传新的版本,那么就会有下面的问题:

  • 每次数据服务团队发布了一版更新的代码时,都要告诉应用接口团队。
  • 应用接口团队需要定期更新他们的 pom.xml 来得到更新的版本。

  快照是一个特殊的版本,它表示当前开发的一个副本。与常规版本不同,Maven 为每一次构建从远程仓库中检出一份新的快照版本。现在数据服务团队会将每次更新的代码的快照(例如 data-service:1.0-SNAPSHOT)发布到仓库中,来替换旧的快照 jar 文件。对于快照,每次用户接口团队构建他们的项目时,Maven 将自动获取最新的快照(data-service:1.0-SNAPSHOT)。

构建自动化 

  快照能保证数据服务是最新的,但是接口工程不能随时被自动构建,有两种方式解决:

  1、在接口工程的 pom 文件里添加一个编译目标来提醒其构建。

  2、使用一个持续集成(CI)的服务器,比如 Hudson或者是Jenkins,来实现自动化创建。

更新数据服务pom文件:

<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/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>bus-core-api</groupId>
   <artifactId>bus-core-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <build>
   <plugins>
   <plugin>
   <artifactId>maven-invoker-plugin</artifactId>
   <version>1.6</version>
      <configuration>
         <debug>true</debug>
         <pomIncludes>
            <pomInclude>app-web-ui/pom.xml</pomInclude>
            <pomInclude>app-desktop-ui/pom.xml</pomInclude> 
         </pomIncludes>
      </configuration>
      <executions>
         <execution>
            <id>build</id>
            <goals>
               <goal>run</goal>
            </goals>
         </execution>
      </executions>
   </plugin>
   </plugins>
   <build>
</project>

执行mvn命令

C:\MVN\bus-core-api>mvn clean package -U

使用Hudson或者是Jenkins

  Hudson 把每次创建工程看做一个工作。一旦工程代码合入到 svn 或者其他任何的映射到Hudson上的代码源管理工具上,Hudson 便开始一次的创建工作,等到该工作完成后,它将会自动创建其他相关的依赖工作或者依赖工程。

  在上面的例子中,当 bus-core-api 的源代码在 SVN 上有更新时, Hudson 将会启动创建。当创建完成后,Hudson 开始自动寻找其依赖的工程,然后启动 app-web-ui 和 app-desktop-ui 工程。

以上是关于Maven 快照及构建自动化的主要内容,如果未能解决你的问题,请参考以下文章

maven学习

maven学习

Maven构建

Maven(三)

在 Maven 中,如何在版本中命名战争文件与在快照构建中不同

如果存储库中有相同快照版本的发布版本,如何停止 Maven 构建?