English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Maven 자동 빌드

자동화된 빌드는 이렇게 한 프로젝트가 성공적으로 빌드되면 관련 의존 프로젝트가 즉시 빌드되는 이러한 상황을 정의합니다. 이렇게 하면 의존 프로젝트의 안정성을 보장할 수 있습니다.

예를 들어, 하나의 팀이 프로젝트 bus를 개발하고 있습니다-코어-api, 그리고 다른 두 개의 프로젝트 app-웹-ui와 앱-데스크톱-ui는 이 프로젝트에 의존합니다.

app-웹-ui 프로젝트가 사용하는 bus-코어-api 프로젝트의 1.0 스냅샷:

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

app-데스크톱-ui 프로젝트가 사용하는 bus-코어-api 프로젝트의 1.0 스냅샷:

<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-데스크톱-ui</groupId>
   <artifactId>app-데스크톱-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <dependencies>
      <dependency>
      <groupId>bus-코어-api</groupId>
         <artifactId>bus-코어-api</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

bus-코어-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-코어-api</groupId>
   <artifactId>bus-코어-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>   
</project>

현재 app-웹-ui와 앱-데스크톱-ui 프로젝트 팀은 bus에 관계없이-코어-api 프로젝트가 언제 변경되든지, 그들의 빌드 과정은 모두 시작될 수 있어야 합니다.

스냅샷을 사용하면 가장 최신의 bus를 보장할 수 있습니다.-코어-api 프로젝트가 사용되지만, 위의 요구사항을 충족하려면 추가 작업을 해야 합니다.

두 가지 방법을 사용할 수 있습니다:

  • bus에서-코어-api 프로젝트의 pom 파일에 하나의 post를 추가-build 목표 작업을 시작하는 app-웹-ui와 앱-데스크톱-ui 프로젝트의 빌드를 수행합니다.

  • 지속 가능한 통합(CI) 서버, 예를 들어 Hudson을 사용하여 빌드 자동화를 자동으로 관리합니다.

Maven을 사용하여

bus를 수정합니다-코어-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-코어-api</groupId>
   <artifactId>bus-코어-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-웹-ui/pom.xml</pomInclude>
            <pomInclude>app-데스크톱-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-코어-api 디렉토리 아래에 있으며, 다음 명령어를 실행합니다.

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

명령어를 실행한 후, Maven이 프로젝트 bus를 빌드 시작합니다-코어-api。

[INFO] 프로젝트를 스캔 중...
[INFO] ------------------------------------------------------------------
[INFO] 빌딩 bus-코어-api
[INFO] task-segment: [clean, package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-}
[INFO] 빌딩 자르: C:\MVN\bus-코어-ui\target\
bus-코어-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] 빌드 성공
[INFO] ------------------------------------------------------------------

bus-코어-api 빌드가 성공적으로 완료되면, Maven은 앱 빌드를 시작합니다-웹-ui 프로젝트.

[INFO] ------------------------------------------------------------------
[INFO] 빌드 중: app-웹-ui 
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-}
[INFO] 빌드 중: C:\MVN\app-웹-ui\target\
app-웹-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] 빌드 성공
[INFO] ------------------------------------------------------------------

app-웹-ui 빌드가 성공적으로 완료되면, Maven은 앱 빌드를 시작합니다-데스크톱-ui 프로젝트.

[INFO] ------------------------------------------------------------------
[INFO] 빌드 중: app-데스크톱-ui 
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-}
[INFO] 빌드 중: C:\MVN\app-데스크톱-ui\target\
app-데스크톱-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] 빌드 성공
[INFO] -------------------------------------------------------------------

지속적인 통합 서버(CI) 사용

CI 서버를 사용하면, 우리는 매번 새로운 프로젝트를 빌드합니다. 예를 들어, 예제의 app-모바일-ui를 추가하여 bus로 의존성을 설정합니다-코어-api 프로젝트를 구현할 때, 개발자는 bus를 업데이트할 필요가 없습니다-코어-api 프로젝트의 pom. Hudson은 Maven의 의존 관리 기능을 사용하여 프로젝트의 자동 생성을 실현합니다.

Hudson은 각 프로젝트 빌드를 한 번의 작업으로 간주합니다. 프로젝트의 코드가 SVN(또는 Hudson에 매핑된 어떤 코드 관리 도구)에提交되면, Hudson은 프로젝트 빌드 작업을 시작하며, 빌드 작업이 완료되면 자동으로 다른 의존 빌드 작업(다른 의존 프로젝트의 빌드)을 시작합니다.

위의 예제에서 bus-코어-ui 소스 코드가 SVN 업데이트 후, Hudson이 프로젝트 빌드를 시작합니다. 빌드가 성공적으로 완료되면, Hudson은 자동으로 의존 프로젝트를 찾아 앱 빌드를 시작합니다-웹-ui와 앱-데스크톱-ui 프로젝트.