Ошибка при попытке использовать org.codehaus.mojo: cobertura-maven-plugin: 2.6

Я пытаюсь использовать плагин Cobertura maven для покрытия кода. Но я получаю сообщение об ошибке при выполнении следующей команды:

mvn clean package cobertura:cobertura -Dcobertura.report.format=xml


Вот как я определил плагин в моем pom.xml:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>cobertura-maven-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <formats>
      <format>xml</format>
    </formats>
    <instrumentation>
      <excludes>
        <include>**/*.class</include>
        <exclude>**/*Test.class</exclude>
        <exclude>**/Test*.class</exclude>
      </excludes>
    </instrumentation>
  </configuration>
</plugin>


И вот ошибка, которую я получаю:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:09.201s
[INFO] Finished at: Thu Aug 21 17:28:24 GMT+00:00 2014
[INFO] Final Memory: 25M/64M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument (default-cli) on project project-beta: Execution default-cli of goal org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument failed: A required class was missing while executing org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument: net/sourceforge/cobertura/util/CommandLineBuilder
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.codehaus.mojo:cobertura-maven-plugin:2.6
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/data/home/user/.m2/repository/org/codehaus/mojo/cobertura-maven-plugin/2.6/cobertura-maven-plugin-2.6.jar
[ERROR] urls[1] = file:/data/home/user/.m2/repository/net/sourceforge/cobertura/cobertura/2.0.3/cobertura-2.0.3.jar
[ERROR] urls[2] = file:/data/home/user/.m2/repository/org/ow2/asm/asm/4.1/asm-4.1.jar
[ERROR] urls[3] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar
[ERROR] urls[4] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-commons/4.1/asm-commons-4.1.jar
[ERROR] urls[5] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-util/4.1/asm-util-4.1.jar
[ERROR] urls[6] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar
[ERROR] urls[7] = file:/data/home/user/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
[ERROR] urls[8] = file:/data/home/user/.m2/repository/jaxen/jaxen/1.1-beta-8/jaxen-1.1-beta-8.jar
[ERROR] urls[9] = file:/data/home/user/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
[ERROR] urls[10] = file:/data/home/user/.m2/repository/jdom/jdom/1.0/jdom-1.0.jar
[ERROR] urls[11] = file:/data/home/user/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar
[ERROR] urls[12] = file:/data/home/user/.m2/repository/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar
[ERROR] urls[13] = file:/data/home/user/.m2/repository/xom/xom/1.0b3/xom-1.0b3.jar
[ERROR] urls[14] = file:/data/home/user/.m2/repository/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar
[ERROR] urls[15] = file:/data/home/user/.m2/repository/xalan/xalan/2.6.0/xalan-2.6.0.jar
[ERROR] urls[16] = file:/data/home/user/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/0.9.7/tagsoup-0.9.7.jar
[ERROR] urls[17] = file:/data/home/user/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar
[ERROR] urls[18] = file:/data/home/user/.m2/repository/org/apache/ant/ant-launcher/1.8.3/ant-launcher-1.8.3.jar
[ERROR] urls[19] = file:/data/home/user/.m2/repository/org/mortbay/jetty/servlet-api-2.5/6.1.14/servlet-api-2.5-6.1.14.jar
[ERROR] urls[20] = file:/data/home/user/.m2/repository/org/mortbay/jetty/jetty/6.1.14/jetty-6.1.14.jar
[ERROR] urls[21] = file:/data/home/user/.m2/repository/org/mortbay/jetty/jetty-util/6.1.14/jetty-util-6.1.14.jar
[ERROR] urls[22] = file:/data/java/jdk1.7.0_45/jre/../lib/tools.jar
[ERROR] urls[23] = file:/data/home/user/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar
[ERROR] urls[24] = file:/data/home/user/.m2/repository/net/sourceforge/cobertura/cobertura-runtime/2.0.3/cobertura-runtime-2.0.3.pom
[ERROR] urls[25] = file:/data/home/user/.m2/repository/urbanophile/java-getopt/1.0.9/java-getopt-1.0.9.jar
[ERROR] urls[26] = file:/data/home/user/.m2/repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar
[ERROR] urls[27] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
[ERROR] urls[28] = file:/data/home/user/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.0.8/maven-reporting-api-2.0.8.jar
[ERROR] urls[29] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-9/doxia-sink-api-1.0-alpha-9.jar
[ERROR] urls[30] = file:/data/home/user/.m2/repository/org/apache/maven/reporting/maven-reporting-impl/2.0.4.2/maven-reporting-impl-2.0.4.2.jar
[ERROR] urls[31] = file:/data/home/user/.m2/repository/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar
[ERROR] urls[32] = file:/data/home/user/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
[ERROR] urls[33] = file:/data/home/user/.m2/repository/commons-digester/commons-digester/1.6/commons-digester-1.6.jar
[ERROR] urls[34] = file:/data/home/user/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
[ERROR] urls[35] = file:/data/home/user/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
[ERROR] urls[36] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar
[ERROR] urls[37] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar
[ERROR] urls[38] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
[ERROR] urls[39] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
[ERROR] urls[40] = file:/data/home/user/.m2/repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar
[ERROR] urls[41] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar
[ERROR] urls[42] = file:/data/home/user/.m2/repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar
[ERROR] urls[43] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar
[ERROR] urls[44] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar
[ERROR] urls[45] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar
[ERROR] urls[46] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar
[ERROR] urls[47] = file:/data/home/user/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar
[ERROR] urls[48] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.2/plexus-utils-2.0.2.jar
[ERROR] urls[49] = file:/data/home/user/.m2/repository/org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR] 
[ERROR] -----------------------------------------------------: net.sourceforge.cobertura.util.CommandLineBuilder
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
Build step 'Invoke top-level Maven targets' marked build as failure
Skipping Cobertura coverage report as build was not UNSTABLE or better ...
Finished: FAILURE  


Я уже очистил свой локальный репозиторий и попытался запустить его снова, но безуспешно.

Есть другие предложения?

Я использую Maven 3.1.0 и Java 1.7.0_45

ОБНОВЛЕНИЕ. Я использую Nexus в качестве менеджера репо. Глядя в журналы, я вижу:

[INFO] Failed to parse Maven artifact /data/home/user/sonatype-work/nexus/storage/central/net/sourceforge/cobertura/cobertura/2.0.3/cobertura-2.0.3.jar due to invalid CEN header (bad signature)

Похоже, это говорит о том, что эта банка повреждена. Но я все время пытаюсь загрузить его заново с Maven Central. Все еще застряли.


person arnieSamich    schedule 21.08.2014    source источник
comment
Поверх вашей трассировки должно быть больше сообщений об ошибках. Можешь взять взгляд и добавить?   -  person Jens    schedule 21.08.2014
comment
Не могли бы вы проверить, можно ли открыть file:/data/home/user/.m2/repository/org/codehaus/mojo/cobertura-maven-plugin/2.6/cobertura-maven-plugin-2.6.jar. Есть небольшая вероятность, что этот файл поврежден. Также меня удивляет запись 24: она относится к помпу ...   -  person Robert Scholte    schedule 21.08.2014
comment
@Jens, это единственное сообщение об ошибке в трассировке. Остальное просто ИНФОРМАЦИЯ   -  person arnieSamich    schedule 21.08.2014
comment
@RobertScholte Я смог открыть банку. Запись 24 странная, но pom.xml для cobertura-maven-plugin-2.6 показывает, что зависимость действительно является файлом pom.   -  person arnieSamich    schedule 21.08.2014
comment
Самая важная строка - A required class was missing while executing org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument: net/sourceforge/cobertura/util/CommandLineBuilder. Вероятно, это не сам CommandLineBuilder, а один из классов, который используется CommandLineBuilder. Не могли бы вы попробовать это с Maven-3.0.5?   -  person Robert Scholte    schedule 22.08.2014
comment
@RobertScholte Я все еще получаю ту же ошибку при использовании Maven-3.0.5. Я даже пытался использовать предыдущую версию Cobertura (2.5.2), изменив версию в моем pom.xml, но она все еще использует 2.6. Это почему?   -  person arnieSamich    schedule 22.08.2014
comment
Если вы называете это как cobertura:cobertura, плагин должен быть помещен в <project><build><plugins>   -  person Robert Scholte    schedule 22.08.2014
comment
@RobertScholte Я забыл упомянуть, что использую Nexus в качестве менеджера репозитория. Когда я исключил это из уравнения и просто нажал Maven Central напрямую (после очистки моего локального репо), все заработало нормально. Итак, проблема в том, что в моем репозитории Nexus что-то повреждено.   -  person arnieSamich    schedule 22.08.2014


Ответы (6)


Использовать этот:-

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>cobertura-maven-plugin</artifactId>
   <version>2.7</version>
   <configuration>
       <formats>
           <format>html</format>
           <format>xml</format>
       </formats>
       <reportSets>
           <reportSet>
               <reports>
                   <report>cobertura</report>
               </reports>
           </reportSet>
       </reportSets>
   </configuration>     
</plugin>
person ojus kulkarni    schedule 15.12.2016

Я также столкнулся с этой проблемой, и проблема была в версии Java в Maven. Может случиться так, что у вас есть несколько версий JDK в системе или ваш Maven ссылается на другую версию JDK.

Итак, сначала вы можете проверить maven и соответствующую версию, набрав команду ниже в каталоге проекта maven.

mvn -v

ITSs-MacBook-Pro: рабочая среда vshah $ mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Домашняя страница Maven: /usr/local/Cellar/maven/3.6.3_1/libexec Версия Java: 1.8.0_241, поставщик: Oracle, время выполнения: Oracle : /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/jre Локаль по умолчанию: en_GB, кодировка платформы: UTF-8 Имя ОС: «mac os x», версия: «10.14.3», архитектура: «x86_64», семейство: «mac»

И проверьте версию maven и JDK. Если вы обнаружили, что версия JDK maven не относится к требуемой версии JDK, вам необходимо проверить свой путь JAVA_HOME. Если вы правильно укажете путь JAVA_HOME, он обязательно будет работать.

person vshah1    schedule 26.02.2020

Пожалуйста, проверьте свою переменную пути. Возможно, вы указываете на путь jre bin, он должен указывать на jdk bin. У меня была такая же проблема, я сделал вышеуказанное решение, оно сработало для меня.

person Raghu    schedule 22.03.2016

Попробуйте скачать с внешнего сайта и поместите его в свой локальный репозиторий.

person nari amilineni    schedule 16.11.2018
comment
Добро пожаловать в StackOverflow! Пожалуйста, предоставьте код или ссылки для подтверждения вашего ответа. У нас есть рекомендации по тому, как написать хороший ответ. - person Joseph Cho; 16.11.2018
comment
Как указано выше, просьба предоставить содержание своего ответа вместо однострочного заявления. - person Nico; 16.11.2018

Если вы, ребята, используете jenkins и сталкиваетесь с проблемой при выполнении описательных заданий, проверьте также конфигурацию,

если вы выбрали опцию автоматической установки для maven и Java в конфигурации Global Tool, затем снимите ее и добавьте вручную каталог, в котором установлены ваши maven и java на сервере jenkins.

person vaishali gupta    schedule 22.11.2020

Самая важная строка - A required class was missing while executing org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument: net/sourceforge/cobertura/util/CommandLineBuilder. Убедитесь, что банка, содержащая этот класс (например, файл: /data/home/user/.m2/repository/net/sourceforge/cobertura/cobertura/2.0.3/cobertura-2.0.3.jar), повреждена. Это так, удалите его из своего локального репозитория. Если вы также используете диспетчер репозитория, убедитесь, что он также поврежден и его необходимо удалить. Затем попробуйте еще раз.

person Robert Scholte    schedule 22.08.2014
comment
Оказывается, это ошибка проверки контрольной суммы для cobertura-2.0.3.jar. Работает нормально, если я обхожу свой Repo Manager (Nexus) и загружаю непосредственно с Maven Central. Ошибка возникает, когда я загружаю через прокси-сервер Maven Central, который я настроил в Nexus. Nexus вычисляет неправильную контрольную сумму и повреждает банку. Это ошибка на стороне Nexus или ошибка конфигурации Nexus с моей стороны? - person arnieSamich; 25.08.2014