maven 의 finalName 을 명령행에서 변경 하기

버전 관리를 git 으로 변경하고 뱀부의 브랜치 자동 빌드 기능을 이용하여 java web app 의 빌드와 디플로이를 자동으로 하려고 한다.

브랜치마다 별도의 web app context 를 만들고 싶은데 이렇게 하려면 매번 maven 의 pom 파일에 finalName 을 변경해야 한다.

 

command line 에서 finalName 이나 기타 maven 의 property 를 변경하려면 다음과 같이 할수 있다.

 

  1. pom.xml 의 finalName 을 프로퍼티를 사용하도록 변경. maven의 기본 finalName은  ${project.artifactId}-${project.version} 이다.

    <groupId>com.example</groupId>
    <artifactId>test-web-app</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    
    
    <properties>
        <finalName>${project.artifactId}</finalName>
    </properties>
     
    <build>
        <finalName>${finalName}</finalName>
    </build>
  2. maven 을 수행할 때 -DfinalName=new-artifact 로 지정하여 실행하면 target 폴더에 new-artifact.war 로 생성이 된다.

    mvn package -DfinalName=new-artifact
     
    ## target/new-artifact.war 생성
  3. 옵션없이 maven 을 실행하면 기본 finalName인 test-web-app.war 로 생성된다.

    mvn package -DfinalName=test-web-app
  4. bamboo 를 사용한다면 Bamboo variables 사용 하여 브랜치명으로 finalName 을 생성할 수 있다. git의 브랜치명은 bamboo.repository.git.branch 변수에 설정된다.

    mvn package -DfinalName=${bamboo.repository.git.branch}
  5.  bamboo 에서 바로 tomcat 에 deploy 하려면 WAR FIle 항목에 아래처럼 변수명을 설정하면 변경된 war 를 참조한다.