JaCoCo SonarQube 비 호환 버전 1007
저는 코드 품질 관리를 위해 SonarQube를 사용하고 있으며, 그렇지 않으면 통과 할 수있는 빌드를 갑자기 분석 할 수없고 실패합니다.
[정보] [00 : 00 : 03.630] /mySuperProject/target/jacoco.exec 분석-> java.io.IOException : 호환되지 않는 버전 1007
디버그 스위치로 maven 빌드를 호출하면이 원인이 드러납니다.
Caused by: java.io.IOException: Incompatible version 1007.
at org.jacoco.core.data.ExecutionDataReader.readHeader(ExecutionDataReader.java:127)
at org.jacoco.core.data.ExecutionDataReader.readBlock(ExecutionDataReader.java:107)
at org.jacoco.core.data.ExecutionDataReader.read(ExecutionDataReader.java:87)
at org.sonar.plugins.jacoco.AbstractAnalyzer.readExecutionData(AbstractAnalyzer.java:134)
at org.sonar.plugins.jacoco.AbstractAnalyzer.analyse(AbstractAnalyzer.java:107)
jacoco ExecutionDataReader를 검사하는 동안 예외가 발생하는 것을 발견했습니다.
if (version != ExecutionDataWriter.FORMAT_VERSION) {
throw new IOException(format("Incompatible version %x.",Integer.valueOf(version)));
}
그리고 ExecutionDataWriter에서 나는
/** File format version, will be incremented for each incompatible change. */
public static final char FORMAT_VERSION = 0x1007;
이 호환되지 않는 변경 은 무엇 이며 왜 발생합니까? 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?
이미 언급했듯이 이는 JaCoCo maven 플러그인 코드가 중단 되었기 때문입니다. (일시적으로) jenkins maven 명령에서 다음과 같이 버전을 지정할 수 있습니다.
clean org.jacoco:jacoco-maven-plugin:<version>:prepare-agent install
예 :
clean org.jacoco:jacoco-maven-plugin:0.7.4.201502262128:prepare-agent install
이것이 우리에게 도움이 된 해결 방법이었습니다. 그러나 대부분의 사람들과 마찬가지로 나는 여전히 해결책이 올 때까지 기다리고 있습니다.
내가 한 일은 내 maven 프로젝트에서 jacoco 버전을 지정하는 것이 었습니다.
<jacoco-maven-plugin.version>0.7.4.201502262128</jacoco-maven-plugin.version>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco-maven-plugin.version}</version>
</plugin>
내 문제가 해결되었습니다!
최신 jacoco-maven-plugin 업데이트로 인해 발생했을 가능성이 큽니다. 모든 것이 0.7.4.201502262128에서 작동했지만 오늘은 0.7.5.201505241946으로 전환하여이 오류가 발생했습니다.
운영:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
mvn org.jacoco:jacoco-maven-plugin:prepare-agent clean install -Pcoverage-per-test
mvn sonar:sonar
이렇게하면 .exec
이전 버전의 jacoco에서 만든 파일 이 다시 생성됩니다.
SonarQube Update Center에서 Java 플러그인을 업데이트하십시오. Java 플러그인을 버전 2.4에서 최신 3.13.1로 업데이트했습니다.
SonarQube 업데이트 센터-> 플러그인 업데이트-> Java
kdowbecki가 언급했듯이이 오류는 jacoco-maven-plugin의 업데이트로 인한 것 같습니다.
SonarQube는 현재 Jacoco Maven 플러그인의 새 버전 (아마 새 0.7.5.201505241946)을 사용하고있을 가능성이 높지만 실제로는 이전 버전의 jacoco.exec를 읽으려고합니다 (귀하의 경우에는 다음에서 생성 된 jacoco.exec를 읽을 수 있습니다. jacoco maven 플러그인 버전 0.7.4.201502262128)로 인해 JaCoCo에서 비 호환성이 발생합니다.
이 문제를 해결하려면 모든 SonarQube / Jenkins 작업이 매번 JaCoCo 보고서를 생성하는지 확인하고 이전 작업에서 생성되었을 수있는 이전 버전의 jacoco.exec에 의존하지 않아야합니다.
나를 위해, 할 때 mvn install
Error while creating report: Cannot read execution data version 0x1006. This version of JaCoCo uses execution data version 0x1007
내가 아키 타입 생성을했지만 아키 타입이 실수로 오래된 jacoco 파일이있는 대상 디렉토리를 포함했음을 의미했습니다 (또는 실수로 git에 체크인되었습니다). 먼저 mvn clean을 수행하고 확인하면 문제가 해결되었습니다. 실행할 단위 테스트가없는 경우 jacoco가 새 파일로 jacoco.exec 파일을 덮어 쓰는 것을 꺼리기 때문에 이전 파일이 보존되고 jacoco 보고서에 사용하려고 시도합니다. FWIW ...
일반적으로 제너레이터와 리포터 의 버전 불일치 를 의미합니다 .
pom.xml을 다음과 같이 변경했습니다.
groupId=org.jacoco
artifactId=jacoco-maven-plugin
version=0.8.4-SNAPSHOT
그것은 나를 위해 일했다
참고 URL : https://stackoverflow.com/questions/30459260/jacoco-sonarqube-incompatible-version-1007
'development' 카테고리의 다른 글
TimeZoneInfo.FindSystemTimeZoneById (String)에 어떤 값을 전달해야합니까? (0) | 2020.10.12 |
---|---|
Node / Express 파일 업로드 (0) | 2020.10.12 |
NHibernate에서 자식 개체를 삭제하는 방법은 무엇입니까? (0) | 2020.10.12 |
속성 파일을 사용하여 Java 로깅을 설정하는 방법은 무엇입니까? (0) | 2020.10.12 |
HTML : 새 창이 아닌 새 탭에서 링크를 강제로 열도록하는 방법 (0) | 2020.10.12 |