2012-04-19 8 views
3

나는 maven 아키타 입을 만들고 있습니다.메이븐 아키 타입 생성 : 프로토 타입 pom

MVN의 원형 : 생성 -DarchetypeGroupId = XXX -DarchetypeArtifactId = archtype-YYYY의 -DarchetypeVersion = 1.1.0-S5-SNAPSHOT이 나는 사용자가 다음 명령을 호출하는 사용자에 대해 작성되는 프로토 타입 프로젝트를 가지고 -DgroupId = zzz -DartifactId = proj11

프로토 타입 pom에서 위 명령에서 지정한 'archetypeVersion'속성을 사용하고 싶습니다. 이와 같이 :

<dependencies> 
    <dependency> 
     <groupId>mmmm</groupId> 
     <artifactId>nte</artifactId> 
     <version>${archetypeVersion}</version> 
    </dependency> 

이것은 나를 위해 작동하지 않습니다. 프로젝트가 생성되면 위에 게시 된 것과 마찬가지로 생성 된 pom에 종속성 스 니펫이 표시됩니다. 그것은 그것을 대체하지 않습니다.

이것이 가능합니까? 메이븐이 허용합니까? 그렇다면 어떻게 할 수 있습니까?

답변

2

이 작업을 수행하는 간단한 방법은 maven-replacer-plugin을 사용하는 것입니다. 당신은 /pom.xml을 원형에 다음 섹션을 추가해야합니다 :이 코드 즉

<build> 
    ... 
    <plugins> 
     <plugin> 
      <groupId>com.google.code.maven-replacer-plugin</groupId> 
      <artifactId>replacer</artifactId> 
      <version>1.5.2</version> 
      <executions> 
       <execution> 
        <phase>prepare-package</phase> 
        <goals><goal>replace</goal></goals> 
       </execution> 
      </executions> 
      <configuration> 
       <file>target/classes/archetype-resources/pom.xml</file> 
       <replacements> 
        <replacement> 
         <token>\$\{archetypeVersion\}</token> 
         <value>${version}</value> 
        </replacement> 
       </replacements> 
      </configuration> 
     </plugin> 
    </plugins> 
    ... 
<build> 

는 원형의 현재 버전 '$ {archetypeVersion}'문자열을 대체합니다. 명령, 결과 파일 '/ 대상/클래스/원형 - 자원/치어를'MVN 설치 '실행 한 후

<dependency> 
    <groupId>xxxx</groupId> 
    <artifactId>yyyy</artifactId> 
    <version>${archetypeVersion}</version> 
</dependency> 

: 귀하의'/src/main/resources/archetype-resources/pom.xml은 '다음 종속성을 포함 .xml '에는 archetype 버전 번호가 포함됩니다. 이제 archetype을 설치했고 'mvn archetype : generate ...'를 사용할 수 있습니다.