Maven 어셈블러 플러그인의 출력 사용 플러그인에 대한 입력으로
-
22-07-2019 - |
문제
제 3 자 애플리케이션을위한 플러그인 프레임 워크의 다양한 구성 요소를 구축하는 많은 Maven 프로젝트가 있습니다. 집계를 사용하여 마스터 프로젝트가 있습니다 (u003Cmodules> 요소), 모든 하위 프로젝트가 포함됩니다. 이 마스터 프로젝트는 또한 Maven 어셈블러 플러그인을 호출합니다. 이제 모든 하위 프로젝트를 빌드하고 어셈블러가 출력/파일/소스/리소스 등을 마스터 빌드 디렉토리로 복사 한 다음이 모든 파일을 단일 배포 지퍼로 가져옵니다. 나는 명령으로 이것을한다 :
MVN 패키지 어셈블리 : 어셈블리
이 모든 것이 잘 작동합니다. 이제이 zip 파일을 다른 Maven 플러그인으로 전달하여 Zip 컨텐츠를 나열한 사용자 정의 매니페스트 파일을 만들고이 매니페스트 파일을 Zip 파일에 다시 삽입합니다. 이 작업을 수행하기 위해 플러그인을 작성했으며 잘 작동합니다.
내 문제는 Maven이 빌드 프로세스의 일부로이 플러그인을 실행하는 것입니다.
플러그인은 어셈블러의 출력이 필요하지만 어쨌든 어셈블러 다음에 플러그인을 실행하는 것 같지는 않습니다.
누구든지 도울 수 있습니까?
해결책
어셈블리가 이미 대상/어셈블리에서 어셈블리를 작성하도록 정의되었다고 가정하면 플러그인의 실행을 표준 수명주기, 당신은 실행할 수 있습니다 mvn install
(예를 들어) 및 해당 수명주기 동안 플러그인을 실행하십시오.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>generate-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<!--your configuration here -->
...
</configuration>
</execution>
</executions>
</plugin>
그런 다음 플러그인 실행을 이후 단계 (예 : 통합 테스트)로 바인딩하여 어셈블리 파일에 액세스 할 수 있도록합니다.
<plugin>
<groupId>your.plugin.groupId</groupId>
<artifactId>your-artifactId</artifactId>
<executions>
<execution>
<id>mung-manifests</id>
<phase>package</phase>
<goals>
<goal>your-goal-name</goal>
</goals>
<configuration>
<assemblyDirectory>${project.build.directory}/assemblies</assemblyDirectory>
</configuration>
</execution>
</executions>
</plugin>
이 접근법을 사용하여 각 플러그인은 실행할 때 관련 단계 (패키지)에서 실행됩니다. mvn package
(또는 설치, 확인, 배포와 같은 이후 단계.).
플러그인을 정의해야합니다 ~ 후에 어셈블리 플러그인 나중에 실행되도록하기 위해 (같은 단계에있을 때만 다른 단계에있는 경우 주문에 대해서는 중요하지 않음).