의존 관계 jar 파일의 압축을 풀고 프로젝트의 특정 위치에 리소스 파일 (이 경우 템플릿)을 복사하는 Maven 플러그인 (unpackTemplates)을 만들었습니다.maven 이슈가 설치되었을 때 maven plugin을 실행할 수 있습니까?
지금 당장 템플릿을 사용하는 모든 프로젝트의 pom 파일에 다음을 넣습니다. 모양은 다음과 같습니다.
<project>
<groupId>DuriansAreDope</groupId>
<artifactId>DuriansAreDope</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugin>
<groupId>mycorp</groupId>
<artifactId>unpackTemplates</artifactId>
<version>1.0</version>
<executions>
<execution>
<configuration>
<groupId>com.mycorp.lib</groupId>
<version>1.0</version>
<artifactId>Lib-With-Templates</artifactId>
</configuration>
<goals>
<goal>unpackTemplates</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
</plugin>
<pluginManagement>....</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>com.mycorp.lib</groupId>
<artifactId>Lib-With-Templates</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
위 프로젝트는 우리에게 적합합니다. 그것은 플러그인을 호출하고 플러그인은 그 일을합니다. 그러나 우리는 모든 프로젝트의 pom에 플러그인 섹션을 추가하는 것을 피하고 싶습니다.
플러그인 섹션을 종속성 pom에 두는 것이 더 합리적입니다. 이 방법을 사용하면 평소와 같이 <dependency>
태그를 추가하는 것 이상의 프로젝트를 수정할 필요가 없습니다. 그리고 의존성은 설치되어있는 곳마다 플러그인을 실행합니다.
Gson의 pom 파일에 <build><plugins>...</plugins></build>
섹션이 포함되어 있습니다. 그러나 종속성을 제공 할 때 다음 pom 파일은 플러그인이 실행되지 않습니다 (종속성이 발견되고 다운로드되고 설치되는 등).
<project>
<groupId>com.mycorp.lib</groupId>
<artifactId>Lib-With-Templates</artifactId>
<version>1.0</version>
<build>
<plugin>
<groupId>mycorp</groupId>
<artifactId>unpackTemplates</artifactId>
<version>1.0</version>
<executions>
<execution>
<configuration>
<groupId>com.mycorp.lib</groupId>
<version>1.0</version>
<artifactId>Lib-With-Templates</artifactId>
</configuration>
<goals>
<goal>unpackTemplates</goal>
</goals>
<phase>generate-sources</phase>
</execution>
</executions>
</plugin>
<pluginManagement>....</pluginManagement>
</build>
</project>
내가 잘못하고있는 아이디어가 있습니까? 아니면 Gson pom이 단순히 완전히 다른 작업을 수행하고 있습니까?
(주의 : 플러그인에 대한 (문자열) 매개 변수이기 때문에 <configuration>
의 groupId/version/artifactIds가 필요합니다. 아마도 내가 run-straight-from-dependency 접근 방식을 사용하면 리팩토링 할 수 있지만 다시 , 심지어는 매개 변수를 사용하여 미봉책 버전을 실행하지 않는 것)
플러그인 외에도 [해당 플러그인이 이미 있습니까?] (http://maven.apache.org/plugins/maven-remote-resources-plugin/examples/sharing-resources.html). 내가 뭔가를 감독 할 수도 있지만, 당신의 문제가 정확히 무엇인지 모르겠습니다. 왜냐하면 당신은'설치의 마지막 단계가 플러그인을 실행하는 것이라는 점을 도서관에 알리는 것이 더 합리적이라고 말했지만'어떤 도서관에 대해 이야기하고 있는지에 대해 썼다. 조금 더 자세히 설명해 주시겠습니까? – khmarbaise
감사합니다. @khmarbaise. 우리는 maven "unpack"플러그인을 찾았지만 당신이 링크 한 "원격 리소스"가 아닙니다. 매개 변수의 구조에서 볼 때 필자는 둘 다 비슷한 일을한다 : 프로젝트에 종속 파일을 복사한다. 그러나 파일을보다 잘 제어 할 필요가 있습니다. 이름을 변경하고 특정 위치에 파일을 놓을 필요가 있습니다. – aarondev
@khmarbaise : 마지막 비트를 상세히 설명하자면, 프로젝트에 Plugin을 추가하는 대신 종속성 자체에 Plugin을 추가하고 싶습니다. 우리는 이것이 프로젝트가 플러그인에 대해 알 필요가 없거나 플러그인을 호출 할 필요없이 종속물이 설치되어있는 곳이면 어디서나 플러그인이 실행된다는 것을 의미합니다. – aarondev