zoukankan      html  css  js  c++  java
  • Maven构建自动化

    构建自动化定义相关工程项目构建过程中,在当项目构建成功完成启动的情况下,来确保所依赖的项目是稳定的。

    实例

    考虑一个团队正在开发一个项目总线核心API上的其他两个项目的应用程序:网页UI和应用程序的桌面UI的依赖。

    app-web-ui 项目使用1.0-SNAPSHOT总线核心API项目

    <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>app_web_ui</groupId>
       <artifactId>app_web_ui</artifactId>
       <version>1.0</version>
       <packaging>jar</packaging>
       <name>app_web_ui</name>
       <url>http://maven.apache.org</url>
       <properties>
          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       </properties>
       <dependencies>
          <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>3.8.1</version>
             <scope>test</scope>
          </dependency>
    	  <dependency>
             <groupId>bus_core_api</groupId>
             <artifactId>bus_core_api</artifactId>
             <version>1.0-SNAPSHOT</version>
    		 <scope>system</scope>
    		 <systemPath>C:MVNus_core_api	argetus_core_api-1.0-SNAPSHOT.jar</systemPath>
          </dependency>
       </dependencies>
    </project>

    app-desktop-ui 项目使用总线核心API项目 1.0-SNAPSHOT

    <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>app-desktop-ui</groupId> <artifactId>app-desktop-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>bus-core-api</groupId> <artifactId>bus-core-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> </project>

    bus-core-api 项目

    <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> </project>

    现在,每当bus-core-api项目的变化时,app-web-ui和app-desktop-ui项目团队需要自己编译过程。

    使用快照确保可以使用最新的 bus-core-api 项目,但要满足上面我们需要做一些额外的要求。

    • 添加一个生成后的目标 bus-core-api POM的应用程序是在 app-web-ui 和 app-desktop-ui 的基础之上。

    • 使用持续集成(CI)的服务器自动管理构建自动化。

    使用Maven

    更新总线核心API项目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/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>

    让我们打开命令控制台,进入到C: /> MVN > bus-core-api目录,然后执行以下命令mvn命令。

    C:/MVN/us-core-api>mvn clean package -U
    

    Maven将开始构建项目bus-core-api。

    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------
    [INFO] Building bus-core-api
    [INFO]    task-segment: [clean, package]
    [INFO] ------------------------------------------------------------------
    ...
    [INFO] [jar:jar {execution: default-jar}]
    [INFO] Building jar: C:MVNus-core-ui	arget
    bus-core-ui-1.0-SNAPSHOT.jar
    [INFO] ------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------
    

    当 bus-core-api 构建成功,Maven将开始构建应用程序 app-web-ui

    [INFO] ------------------------------------------------------------------
    [INFO] Building app-web-ui 
    [INFO]    task-segment: [package]
    [INFO] ------------------------------------------------------------------
    ...
    [INFO] [jar:jar {execution: default-jar}]
    [INFO] Building jar: C:MVNapp-web-ui	arget
    app-web-ui-1.0-SNAPSHOT.jar
    [INFO] ------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------
    

    当 app-web-ui 构建成功,Maven将开始构建 app-desktop-ui 项目

    [INFO] ------------------------------------------------------------------
    [INFO] Building app-desktop-ui 
    [INFO]    task-segment: [package]
    [INFO] ------------------------------------------------------------------
    ...
    [INFO] [jar:jar {execution: default-jar}]
    [INFO] Building jar: C:/MVN/app-desktop-ui	arget
    app-desktop-ui-1.0-SNAPSHOT.jar
    [INFO] -------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] -------------------------------------------------------------------
    

    使用Maven持续集成服务

    使用CI服务器更适合作为开发人员,每次创建一个新的项目不需要更新 bus-core-api 项目的 POM,例如 app-mobile-ui 添加作为 bus-core-api 项目相关的项目。Hudson 自动管理使用 Maven 依赖管理构建自动化。 

    automated build

    Hudson 认每个项目生成的工作。一旦一个项目的代码签入到SVN(或映射到哈德森任何源管理工具),哈德森开始它的构建工作,一旦这项工作得到完成,它会自动启动其他相关工作(其他相关项目)。

    在上面的例子中,当bus-core-ui 源代码SVN更新,Hudson 开始它的构建。当构建成功,Hudson 自动查找相关的项目,并开始构建 app-web-ui 和app-desktop-ui 项目。

  • 相关阅读:
    1012 The Best Rank (25 分)(排序)
    1011. World Cup Betting (20)(查找元素)
    1009 Product of Polynomials (25 分)(模拟)
    1008 Elevator (20 分)(数学问题)
    1006 Sign In and Sign Out (25 分)(查找元素)
    1005 Spell It Right (20 分)(字符串处理)
    Kafka Connect 出现ERROR Failed to flush WorkerSourceTask{id=local-file-source-0}, timed out while wait
    flume、kafka、avro组成的消息系统
    Java23种设计模式总结【转载】
    Java编程 思维导图
  • 原文地址:https://www.cnblogs.com/borter/p/9605554.html
Copyright © 2011-2022 走看看