Maven-배포 자동화

프로젝트 개발에서 일반적으로 배포 프로세스는 다음 단계로 구성됩니다.

  • 진행중인 모든 프로젝트의 코드를 SVN (버전 제어 시스템) 또는 소스 코드 저장소에 체크인하고 태그를 지정합니다.

  • SVN에서 전체 소스 코드를 다운로드하십시오.

  • 애플리케이션을 빌드하십시오.

  • 빌드 출력을 WAR 또는 EAR 파일을 공통 네트워크 위치에 저장하십시오.

  • 네트워크에서 파일을 가져 와서 프로덕션 사이트에 배포합니다.

  • 응용 프로그램의 날짜 및 업데이트 된 버전 번호로 설명서를 업데이트했습니다.

문제 설명

위에서 언급 한 배포 프로세스에는 일반적으로 여러 사람이 참여합니다. 한 팀은 코드 체크인을 처리하고 다른 팀은 빌드 등을 처리 할 수 ​​있습니다. 수작업이 수반되고 다중 팀 환경으로 인해 모든 단계를 놓칠 수 있습니다. 예를 들어, 이전 빌드는 네트워크 머신에서 교체 할 수 없으며 배포 팀은 이전 빌드를 다시 배포했습니다.

해결책

다음을 결합하여 배포 프로세스를 자동화하십시오-

  • Maven, 프로젝트를 빌드하고 릴리스합니다.
  • 소스 코드를 관리하는 SubVersion, 소스 코드 저장소.
  • 프로젝트 바이너리를 관리하기위한 원격 저장소 관리자 (Jfrog / Nexus).

프로젝트 POM.xml 업데이트

Maven 릴리스 플러그인을 사용하여 자동화 된 릴리스 프로세스를 만들 것입니다.

예 : bus-core-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> 
   <scm>
      <url>http://www.svn.com</url>
      <connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
      Framework</connection>
      <developerConnection>scm:svn:${username}/${password}@localhost:8080:
      common_core_api:1101:code</developerConnection>
   </scm>
   <distributionManagement>
      <repository>
         <id>Core-API-Java-Release</id>
         <name>Release repository</name>
         <url>http://localhost:8081/nexus/content/repositories/
         Core-Api-Release</url>
      </repository>
   </distributionManagement>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.0-beta-9</version>
            <configuration>
               <useReleaseProfile>false</useReleaseProfile>
               <goals>deploy</goals>
               <scmCommentPrefix>[bus-core-api-release-checkin]-<
               /scmCommentPrefix>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

Pom.xml에서 다음은 우리가 사용한 중요한 요소입니다.

Sr. 아니. 요소 및 설명
1

SCM

Maven이 소스 코드를 체크 아웃 할 SVN 위치를 구성합니다.

2

Repositories

빌드 된 WAR / EAR / JAR 또는 기타 아티팩트가 코드 빌드 성공 후 저장 될 위치입니다.

Plugin

maven-release-plugin은 배포 프로세스를 자동화하도록 구성됩니다.

Maven 릴리스 플러그인

Maven은 다음을 사용하여 다음과 같은 유용한 작업을 수행합니다. maven-release-plugin.

mvn release:clean

마지막 릴리스 프로세스가 성공하지 못한 경우 작업 공간을 정리합니다.

mvn release:rollback

마지막 릴리스 프로세스가 성공하지 못한 경우 작업 영역 코드 및 구성에 대한 변경 사항을 롤백합니다.

mvn release:prepare

다음과 같은 여러 작업을 수행합니다.

  • 커밋되지 않은 로컬 변경이 있는지 여부를 확인합니다.

  • SNAPSHOT 종속성이 없는지 확인합니다.

  • 애플리케이션의 버전을 변경하고 릴리스 할 버전에서 SNAPSHOT을 제거합니다.

  • pom 파일을 SVN으로 업데이트합니다.

  • 테스트 케이스를 실행하십시오.

  • 수정 된 POM 파일을 커밋합니다.

  • Subversion에서 코드에 태그 지정

  • 버전 번호를 늘리고 향후 릴리스를 위해 SNAPSHOT을 추가하십시오.

  • 수정 된 POM 파일을 SVN에 커밋합니다.

mvn release:perform

이전에 정의 된 태그를 사용하여 코드를 확인하고 Maven 배포 목표를 실행하여 전쟁 또는 빌드 된 아티팩트를 저장소에 배포합니다.

명령 콘솔을 열고 C:\ > MVN >bus-core-api 디렉토리를 열고 다음을 실행하십시오. mvn 명령.

>mvn release:prepare

Maven이 프로젝트 빌드를 시작합니다. 빌드가 성공하면 다음을 실행하십시오.mvn 명령.

>mvn release:perform

빌드가 성공하면 저장소에 업로드 된 JAR 파일을 확인할 수 있습니다.