2010-01-08 4 views
2

나 기기 내 클래스 명령을Maven 2/Cobertura 장비 목표에서 기본 출력을 변경하는 방법은 무엇입니까?

MVN의 cobertura를 사용 메이븐 2를 사용 : 악기

출력 (계측 클래스) \ 대상 \ 생성 클라스에 배치된다. 출력 위치를 \ target \ classes로 변경하는 방법이 있습니까?

나는 cobertura-maven 플러그인의 계측 작업을 확인했으나, 해결책이 없었습니다.

+0

파스칼. 계장 클래스를 클래스 폴더에서 생성하고 m2eclipse에서 선택하여 Tomcat에 게시 할 수 있도록하는 용도로 사용할 수 있습니까? – sfk

답변

1

필자가 이해하는 한, 계측 된 클래스는 보고서 작성을 위해 cobertura에서만 필요합니다. target/classes에서 생성하면 원본 클래스 파일을 덮어 씁니다. 당신이 결과로 항아리에 계측 파일이 필요하면

, 당신은 maven-jar-plugin이 또는 표준 ${build.project.outputDirectory}에서 파일에 추가하는 대신 target/generated-classes 디렉토리에서 파일을 선택하는 구성 할 수 있습니다.

편집은 maven-jar-plugin description에서보세요. 단지 target/generated-classes를 사용하려면 POM에 다음과 같은 추가 작업을해야합니다 - 그것을 시도하고 여러분의 필요에 수정 :

<project> 
    ... 
    <build> 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>2.3</version> <!-- replace with correct version nbr! --> 
     <configuration> 
      <includes> 
      <include>${project.build.directory}/generated-classes/**/*.class</include> 
      </includes> 
      <excludes> 
      <exclude>${project.build.directory}/classes/**/*.class</include> 
      </excludes> 

     </configuration> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
    ... 
</project> 

${project.build.directory} 지점을 대상 폴더 ${project.build.ouputDirectory}에/클래스를 대상으로. 어쩌면 당신은 몇 가지 힌트를

편집 2

Alternativly를 찾으 this chapter of the maven book을 살펴하거나 추가로 당신은 파일을 복사 할 받는다는 사용할 수 있습니다 - 당신은 단순히 새로운 값으로 ${project.build.ouputDirectory}를 설정할 수 있을지 모르겠어요 coberture:instrument이 완료된 후 target/generated-classes에서 대상/클래스로 변경하십시오. This question에는 POM (조각) 예제와 함께 한 가지 대답이 있습니다. 올바른 단계를 식별해야합니다 (프로세스 리소스가 자신의 경우에 너무 이르다).

+0

목표/클래스를 덮어 쓰는 것이 가장 좋을 것입니다. 그런 식으로 전쟁, 항아리, 귀를 포장하지 않을 것입니다. 생성 또는 패키징을 위해 $ {project.build.outputDirectory}를 덮어 쓰거나 설정하는 것으로 충분합니까? – Marco

+0

항아리 안에 전쟁 도구가 필요합니다. 그래서 나는 쉬운 방법을 이룰 수있는 방법을 찾고 있습니다. – Marco

0

방금 ​​Andreas_D에서 제안한 솔루션을 구현하고 내 pom을 수정하고 사용합니다. maven-resources-plugin. 그래서 내 빌드의 어떤 단계에서 Cobertura 생성 파일은/target/classes 디렉토리에 복사됩니다.

0

당신은 cobertura-받는다는 - 플러그인 버전 2.4에서 <classesDirectory>[Your DIR]</classesDirectory>

0

이 아직 지원되지 않습니다 사용하여 구성 할 수 있습니다. 방금 improvement ticket을 만들었습니다. 패치가 티켓에 첨부되어 있습니다.

3

왜 기본 위치를 덮어 쓰겠다 고 말하지는 않았지만 다른 프로젝트의 계측 된 클래스를 사용하거나 웹 아카이브 또는 이와 유사한 것으로 포함시킬 수 있다고 가정했습니다.

나는이 받는다는는 프로젝트 이름 계측라는 추가 jar 파일을 생성하게 내 pom.xml 파일

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>instrumented-classes</id> 
      <goals> 
       <goal>jar</goal> 
      </goals> 
      <phase>package</phase> 
      <configuration> 
       <classifier>instrumented</classifier> 
       <classesDirectory>${project.build.directory}/generated-classes/cobertura</classesDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

에 다음을 추가했다.

<depends> 
    <group>mygroup</group> 
    <project>projectname</project> 
    <version>1</version> 
    <classifier>instrumented</classifier> 
</depends> 

내가이 100 %를 테스트하지 않았지만 과거에 유사한 메커니즘을 사용하고 사용 (예 : 웹 모듈 포함) 다른 치어에서이 jar 파일에 의존하는 것이 가능하다

항아리

1

"mvn cobertura : instrument install"을 시도 했습니까? 모든 cobertura 버전 클래스를 포함하는 jar 파일을 생성합니다. 원본 버전을 되돌리려면 "cobertura : instrument"없이 명령을 실행하십시오.

관련 문제