Maven 어셈블러 플러그인의 출력 사용 플러그인에 대한 입력으로

StackOverflow https://stackoverflow.com/questions/1445235

  •  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 (또는 설치, 확인, 배포와 같은 이후 단계.).

플러그인을 정의해야합니다 ~ 후에 어셈블리 플러그인 나중에 실행되도록하기 위해 (같은 단계에있을 때만 다른 단계에있는 경우 주문에 대해서는 중요하지 않음).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top