2010-01-08 58 views
2

當我儀器我的類中使用命令如何更改Maven 2/Cobertura儀器目標的默認輸出?

MVN的Cobertura使用Maven 2:儀器

輸出信號(在儀器類)放入\目標\產生類。有沒有辦法將輸出位置更改爲\ target \ classes?

我檢查了cobertura-maven插件的工具任務,但是這並沒有給我一個解決方案。

+0

帕斯卡。你有沒有找到一個這樣的獨奏,可以在classes文件夾中生成插裝的類,並且進一步被m2eclipse發佈到tomcat? – sfk 2011-08-31 16:23:35

回答

1

據我所知,只有cobertura需要儀表類才能生成報告。如果您在target/classes中創建它們,它們將覆蓋原始類文件。

如果你需要在一個罐子裏,結果受檢測的文件,您可以配置maven-jar-plugintarget/generated-classes目錄拿起文件,而不是或除了將文件從標準${build.project.outputDirectory}

編輯

看一看的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}目標/班。我不知道你是否可以簡單地設置${project.build.ouputDirectory}到一個新的價值 - 看看在this chapter of the maven book,也許你會發現一些線索

編輯2

Alternativly或另外你可以使用Maven來複制文件在coberture:instrument完成後,從目標/生成類到目標/類。 This question有一個示例POM(片段)的答案,你只需要確定正確的階段(過程資源對你的情況肯定爲時過早)

+0

這將是最佳的覆蓋目標/類,這樣我的戰爭,罐子和耳朵的包裝將不會改變。覆蓋/設置用於生成或打包的$ {project.build.outputDirectory}是否足夠了? – Marco 2010-01-08 10:39:55

+0

我需要那些裝在我的罐子/戰爭和耳朵裏的裝備類。所以我正在尋找一種方法來完成這個簡單的方法。 – Marco 2010-01-08 10:53:50

0

我剛剛實施了Andreas_D提出的解決方案,修改了我的pom並使用maven-resources-plugin。所以在構建的某個階段,Cobertura生成的文件被複制到/ target/classes目錄。

0

可以使用<classesDirectory>[Your DIR]</classesDirectory>

0

在的Cobertura,Maven的插件2.4版本仍然不支持對其進行配置。我剛剛創建了一個improvement ticket,補丁已附加到票證上。

3

您還沒有說過爲什麼要覆蓋默認位置,但我認爲這樣可以使用來自其他項目的插裝類,或者也可以將它們包含在Web存檔或類似的東西中。

添加以下到我的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> 

這使得行家生成一個名爲項目名稱,儀表附加jar文件。罐子

然後可以依靠這個jar文件從任何其他POM(包括例如web模塊)使用

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

我沒有測試這個100%,但在過去使用類似的機制

1

你試過「mvn cobertura:instrument install」嗎?它將生成一個包含所有cobertura版本類的jar文件。 如果您想更改原始版本,只需運行不帶「cobertura:instrument」的命令。