Как изменить выход по умолчанию для цели инструмента Maven 2 / Cobertura? - PullRequest
2 голосов
/ 08 января 2010

когда я использую свои классы, используя Maven 2, используя команду

mvn cobertura: инструмент

Выходные данные (инструментированные классы) помещаются в \ target \ генерируемые классы. Есть ли способ изменить расположение вывода на \ target \ classes?

Я проверил инструментальные задачи плагина cobertura-maven, но это не дает мне решения.

Ответы [ 6 ]

3 голосов
/ 11 мая 2011

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

Я добавил следующее в свой 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>

Это заставляет maven генерировать дополнительный файл jar с именем projectname-instrumented.jar

Тогда можно зависеть от этого файла jar от любого другого pom (включая, например, веб-модуль), используя

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

Я не проверял эти 100%, но использовал подобные механизмы в прошлом

1 голос
/ 02 апреля 2012

Вы пробовали "mvn cobertura: установка инструмента"?Он создаст файл jar, включающий все классы версий cobertura.Если вы хотите изменить исходную версию, просто запустите команду без «cobertura: instrument».

1 голос
/ 08 января 2010

Насколько я понимаю, инструментированные классы нужны только cobertura для генерации отчетов. Если вы создадите их в target/classes, они перезапишут исходные файлы классов.

Если в результате вам понадобятся инструментированные файлы в банке, вы можете настроить maven-jar-plugin на выбор файлов из каталога target/generated-classes вместо или в дополнение к файлам из стандартного ${build.project.outputDirectory}.

Редактировать

Взгляните на описание maven-jar-plugin . Чтобы использовать только 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} - на цель / классы. Я не знаю, можете ли вы просто установить ${project.build.ouputDirectory} на новое значение - взгляните на эту главу книги maven , может быть, вы найдете несколько подсказок

Редактировать 2

Альтернативно или дополнительно вы можете использовать maven для копирования файлов из целевых / созданных классов в целевые / классы после завершения coberture:instrument. На этот вопрос есть один ответ с примером POM (фрагмент), вам просто нужно определить правильную фазу (ресурсы процесса определенно слишком рано для вашего случая)

0 голосов
/ 10 марта 2011

В плагине cobertura-maven-plugin версии 2.4 это все еще не поддерживается.Я только что создал заявку на улучшение , к заявке прикреплен патч.

0 голосов
/ 09 июня 2010

Вы можете настроить его, используя <classesDirectory>[Your DIR]</classesDirectory>

0 голосов
/ 08 января 2010

Я только что реализовал решение, предложенное Andreas_D, изменил мой pom и использовал плагин maven-resources-plugin. Поэтому на каком-то этапе моей сборки сгенерированные Cobertura файлы копируются в каталог / target / classes.

...