Problem

  • 누군가가.. 구현한 메이븐 프로젝트(java기반)가 내부적으로 main 클래스를 여러개 가지고 있고 모두 따로 빌드해야하는 경우... (그 누군가..는 이클립스에서 각 main 클래스 우클릭 export - runnable jar로 뽑아낸 jar 파일을 나에게 준다..) 그런데 나는 이 과정을 자동화해야한다.. (메인 시스템 빌드하는 젠킨스 빌드과정에 포함시키기 위함)

Solution

  • "maven build multiple jar" 를 키워드로 검색한 결과 maven-assembly-plugin을 사용한 방법을 찾음..

  • 아래와 같이 pom.xml에 추가하고 mvn package 명령 실행

    <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
    
          <execution>
            <id>make-assembly1</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <archive>
                <manifest>
                  <mainClass>fully.qualified.ClassName1</mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <finalName>name1</finalName>
              <appendAssemblyId>false</appendAssemblyId>
            </configuration>
          </execution>
    
          <execution>
            <id>make-assembly2</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <archive>
                <manifest>
                  <mainClass>fully.qualified.ClassName2</mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <finalName>name2</finalName>
              <appendAssemblyId>false</appendAssemblyId>
            </configuration>
          </execution>
    
        </executions>
      </plugin>
    </plugins>
    </build>

참고

Apache 공식 maven-assembly-plugin usage
Github Gist - Creating two different executable JARs with dependencies from the same Maven project