2016-08-11 14 views
1

구성에 정의 된 각 환경에 대해 미리 정의 된 폴더 구조에 대한 리소스를 만들고 번들링하는 자체 maven-environment-plugin을 만들고 있습니다. 플러그인은 폴더 구조와 리소스를 zip 파일로 출력하여 대상 폴더에 저장합니다.대상 폴더에서 zip 파일 (자체 제작 한 메이븐 플러그인으로 생성)을 로컬 저장소에 저장하는 방법은 무엇입니까?

질문 :

  • 가 어떻게이 maven-assembly-plugin처럼 내 플러그인 작업 때문에 내 출력 내가 'MVN 설치'를 사용하는 경우도 내 로컬 저장소에 끝나는 폴더를 대상으로 만들 수 있습니까?
  • 표시해야합니까? maven-assembly-plugin이 사용될 때 자동으로 수행됩니다.
  • maven-assembly-plugin은 어떻게 확인할 수 있습니까?

내 플러그인 개발에 mojo를 사용하고 있습니다.

<plugin> 
    <groupId>dk.kmd.devops.maven.plugin</groupId> 
    <artifactId>envconfiguration-maven-plugin</artifactId> 
    <version>1.0.3</version> 
    <configuration> 
     <environments> 
      <environment>${env.local}</environment> 
      <environment>${env.dev}</environment> 
      <environment>${env.t1}</environment> 
      <environment>${env.t2}</environment> 
      <environment>${env.p0}</environment> 
     </environments> 
     <sourceConfigDir>${basedir}/src/main/config</sourceConfigDir> 
     <zipEnvironments>true</zipEnvironments> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>generateEnv</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

답변

1

당신은 공식 유물의 일환으로 (즉,이 경우 올바른 용어입니다) 빌드에 새 이슈 (생성 된 zip 파일)을 첨부해야합니다.

이것은 build-helper-maven-pluginattach-artifact 목표는 무엇을 기본적으로 :

추가 인공물을 설치하고 배포 할 연결합니다. its official examples에서

의 첨부 목표 :

는 일반적으로 antrun:run 후 실행 또는 설치 및 배포를위한 프로젝트에 첨부 할 파일을 생성하는 다른 플러그인.

이 경우 다른 플러그인

당신이 개발 한 플러그인이 될 수 있습니다.

  • 구성 추가 pom.xml 구성으로 생성 된 아티팩트를 연결하는이 플러그인, 또는
  • 하여 자동으로 생성 된 파일
를 연결하는 기능을 플러그인에 추가 : 따라서 귀하의 경우에 두 가지 솔루션이있다

두 번째 사례는 MavenProjectHelperattachArtifact 메소드를 사용하여 Maven API를 통해 처리 할 수 ​​있습니다.

/** 
* Maven ProjectHelper 
*/ 
@Component 
private MavenProjectHelper projectHelper; 

그런 다음 상기 방법을 사용하십시오 : 당신의 모조에

가져올 수는을 통해 구성 요소로서, 그것은을 제공

projectHelper.attachArtifact(project, "zip", outputFile); 

당신은 아마 이미 필요한 메이븐 의존성을해야을하지만, 경우에 따라 this one :

<dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-core</artifactId> 
    <version>3.3.9</version> 
</dependency> 

이슈는 classifier을 통해 추가 이슈로 빌드에 첨부됩니다. 즉, 기본 이슈 이름의 접미사와 기본 이슈를 구분하여 빌드의 출력으로 고유하게 만듭니다. ,


실제 예를 참조로 추가하여 (마지막) 질문에 대답하는

은의 attachArtifact 문자열을 확인하면서 GitHub의 maven-plugins 저장소에 this 쿼리를 확인 당신은 메이븐 플러그인의 숫자에 사용되는 볼 그 중 maven-assembly-plugin, 예를 들어 AbstractAssemblyMojo 클래스의 here입니다.

+1

위대한 !! Thx 많이 :) 나는 두 번째 경우에 확실히 갈 것입니다. 내 플러그인을 다른 플러그인과 독립적으로 만들고 싶습니다. 나는 돌아올거야. – Elias