2013-05-14 2 views
0

우리는 clover와 axistools-wsdl2java 플러그인을 사용하는 maven 프로젝트를 가지고 있습니다. Platfrom은 창문입니다.axistools와 clover plugin이 모두 maven 프로젝트에 포함되어있을 때의 중복 클래스 에러

우리는 프로젝트의 pom.xml에 통합 된 코드 커버리지를 얻기 위해 클로버 2.4.0 플러그인을 사용하고 있습니다. 다음과 같이 클로버 플러그인을 구성했습니다.

<plugin> 
    <groupId>com.atlassian.maven.plugins</groupId> 
    <artifactId>maven-clover2-plugin</artifactId> 
    <version>2.4.0</version> 
    <configuration> <generatePdf>true</generatePdf> 
    <generateXml>true</generateXml> 
    <generateHtml>true</generateHtml> 
    <licenseLocation>C:/EcasSVNCO/ews/ews-mvn/ewsbase/src/test/resources/license/clover.license</licenseLocation> 
    <reportDescriptor>C:/EcasSVNCO/ews/ews-mvn/ewsbase/src/test/resources/descriptor/default-clover-report.xml</reportDescriptor> 
    <excludes> 
     <exclude>${basedir}/src/main/java/*.java</exclude> 
    </excludes> 
    </configuration> 
     <executions> 
      <execution> 
       <id>install</id> 
       <phase>install</phase> 
       <goals> 
        <goal>instrument</goal> 
        <goal>clover</goal> 
       </goals> 
      </execution> 
      <!-- 
      <execution> 
       <id>test</id> 
       <phase>test</phase> 
       <goals> 
        <goal>instrument</goal> 
        <goal>clover</goal> 
       </goals> 
      </execution> 
      <execution> 
       <id>site</id> 
       <phase>pre-site</phase> 
       <goals> 
        <goal>instrument</goal> 
        <goal>clover</goal> 
       </goals> 
      </execution> 
      --> 
     </executions> 
</plugin> 

또한 아래와 같이 구성된다 WSDL 파일을 사용하여 클래스를 생성하는 데 사용되는 플러그 axistools있다.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>axistools-maven-plugin</artifactId> 
    <version>1.4</version> 
    <configuration> 
     <sourceDirectory>${base.dir}/src/main/resources/wsdl</sourceDirectory> 
     <outputDirectory>${base.dir}/src/main/java</outputDirectory> 
     <wsdlFiles> 
      <wsdlFiles>wsecas.wsdl</wsdlFiles> 
     </wsdlFiles> 


     <packageSpace>com.symantec.wsecas</packageSpace> 
     <testCases>true</testCases> 
     <serverSide>true</serverSide> 
     <phase>install</phase> 
     <subPackageByFileName>true</subPackageByFileName> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

우리가 명령을 실행

'MVN 클린 설치', 컴파일 잘 갈 것입니다. 그런 다음 첫 번째 axistool의 wsdl2java 목표가 실행되고 소스 파일이 각각의 디렉토리에 생성됩니다. 다음 클로버 플러그인이 플러그인은/주/자바/... 그런 다음이 화재 "컴파일" {기본 디렉토리}/대상/클로버/SRC에서 계측 된 소스 코드를 배치 할 때, 단위 테스트 케이스를 실행하여 악기의 소스 코드를 시도 목표는 모든 소스 코드를 컴파일합니다. 소스 코드를 컴파일하는 동안 두 소스 경로가 추가됩니다. 즉, {basedir}/src/main/java/... 및 {basedir}/target/clover/src/main/java/... 모두 동일한 클래스를가집니다. . maven 컴파일러가 이러한 소스 컴파일을 시도 할 때 "중복 클래스 오류"가 발생하여 컴파일이 실패합니다.

그러나 우리가 axistools 플러그인을 주석 처리하면 클로버 계측 및 보고서 생성이 잘됩니다. 너희 중에 누구든지 유사한 문제 '중복 클래스 오류'건너 한 경우

,이 점에서 우리를 인도하시기 바랍니다. 모든 제안과 도움을 주시면 대단히 감사하겠습니다.

답변

0

그것은 문제가 당신의 축 플러그인 SRC/메인/자바 소스를 생성하는 것 같다 (오히려이어야한다 대상/SRC 생성). 클로버 처음 SRC/메인/자바, 악기를에서 '정상'소스를 가지고 목표/클로버/자바에 넣어 호출

. 다음 클로버는 src/main/java를 target/clover/java로 대체 한 소스 루트 목록을 변경합니다.

옆 AXIS 코드 생성은 활동하기 시작하고 또한 별도의 소스 루트로이 디렉토리를 추가 SRC/메인/자바로 다시 새로운 소스를 생성합니다. 컴파일러는 두 위치에서 같은 소스 (즉, 비 생성 된 것)을보고 그것에 대해 불평 결과적으로

.

이 경우는 클로버의 기술 자료에서 설명 된 것과 매우 유사하다 :이 기사에서 가능한 솔루션을 찾을 수

https://confluence.atlassian.com/display/CLOVERKB/Duplicate+class+errors+with+Clover+and+JAXB+or+JAXB2+plugin

https://confluence.atlassian.com/display/CLOVERKB/Duplicate+class+errors+with+Clover+and+jaxws-maven+plugin

.