2010-02-03 3 views
28

패키지 접두어를 사용하는 일부 Java 소스 파일 (일부 JDK 클래스를 에뮬레이트 함)이 있습니다. 나는이 파일을 접두사와 함께 사용하여 일부 단위 테스트를 수행합니다. 테스트가 통과되면 소스 파일을 포함하지만 모든 Java 파일에서 패키지 접두어가 제거 된 jar 파일을 생성하려고합니다.리소스를 복사 할 때 소스 파일에서 전체 문자열을 검색하고 바꿉니다.

빌드에 maven을 사용하고 있습니다. 아무도이 일을하는 방법을 알고 있습니까? 본질적으로 내가 원한 것은 리소스 플러그인 필터링 기능과 비슷하지만 $ {vars}에서 필터링하는 것이 아니라 적절한 검색 및 바꾸기 (예 : s/my.package.prefix .// g)를 수행합니다.

답변

23

이것은 antrun 플러그인으로 해결할 수 있습니다. 둘째

<build> 
    ... 
    <resources> 
    <resource> 
     <directory>src/main/java</directory> 
     <includes> 
     <include>**/*.java</include> 
     </includes> 
    </resource> 
    </resources> 
    ... 
</build> 

당신이 복사됩니다 패키지 단계를

<build> 
    ... 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>prepare-package</phase> 
     <configuration> 
      <tasks> 
      <replace token= "my.package.prefix." value="" dir="target/classes">         
       <include name="**/*.java"/> 
      </replace> 
      </tasks> 
     </configuration> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
    ... 
</build> 

를 준비 사용하여 파일을 대체 할 antrun 플러그인의 replace 작업을 사용 : 첫째 소스와 대상 디렉토리에 복사해야 프로세스 자원 단계의 대상/클래스에 대한 소스 파일, 준비 패키지 단계의 target/classes 디렉토리에있는 파일을 검색하고 바꿉니다. 그리고 마지막으로 패키지 단계에서 jarred합니다.

+0

나는이 실행 단계가 발생하기을 가능으로이 방법을 선호하는 더 정확하게 일을하고, 다른 작업을 할 수 있습니다 별도로 파일. – JayZee

+2

대체가 올바르게 수행되었지만 대체 된 .java가 컴파일되지 않으며 생성 된 패키지에 포함되지 않습니다. 이는 소스 파일 만 수집하고 아직 컴파일되지 않은 준비 패키지 단계에서 바꾸기 플러그인을 적용하기 때문입니다. 컴파일 단계에서이 솔루션을 적용해야합니다. – AntuanSoft

+0

자바 파일에서 뭔가를하려면 [templating-maven-plugin] (http://www.mojohaus.org/templating-maven-plugin/)을 추천 할 수 있습니다. – khmarbaise

39

또한

http://code.google.com/p/maven-replacer-plugin/

100 % 받는다는 사용하고 싶은

+0

받아 들여지지 않더라도, 이것은 "Maven Way"입니다. +1 –

+0

글쎄, 나는 "메이븐 웨이"에 대해 너무 단정적이지 않을 것이다. 이 플러그인은 사실 antrun 형제처럼 너무 많이 보인다. 어쨌든, XML의 청크와 덩어리로 거의 모든 프로그래밍 방식의 구성으로 pom.xml을 키우는 것은 분명히 방법이 아닙니다. –

+1

링크는 404를 제공하고 나는 그것을 검색하는 데 문제가 있습니다. 어떤 생각이 플러그인에 일어 났습니까? –

관련 문제