将Sonar从Maven runner迁移到Ant runner时保留模块键

时间:2013-08-02 12:16:49

标签: sonarqube

我们希望将使用Maven跑步者的现有多模块Sonar项目转换为使用Ant跑步者。无论如何,这些项目都使用Ant进行主体构建,使用Ant完成所有操作会更加方便。

我们必须保留项目的历史,这意味着我们需要保留用于项目及其模块的密钥。我在这方面遇到了麻烦。

我们当前的Maven父pom看起来像这样(ui类似,虽然语言是Flex):

<project ...>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>anapp</artifactId>
  <name>An Application</name>
  <version>7.0</version>
  <packaging>pom</packaging>
  <modules>
    <module>server</module>
    <module>ui</module>
  </modules>
  <properties>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
  </properties>   
</project>

服务器模块pom如下所示:

<project ...>
  <parent>
    <groupId>com.example</groupId>
    <artifactId>anapp</artifactId>
    <version>7.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>anapp_server</artifactId>
  <name>Server</name>
  <version>7.0</version>
  <build>
    <outputDirectory>build/classes</outputDirectory>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testOutputDirectory>build/test/classes</testOutputDirectory>
    <testSourceDirectory>src/test</testSourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>   
  <properties>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.core.codeCoveragePlugin>emma</sonar.core.codeCoveragePlugin>
    <sonar.emma.reportPath>build\codecoverage-results</sonar.emma.reportPath>
    <sonar.surefire.reportsPath>build\test\results</sonar.surefire.reportsPath>
  </properties>  
</project>

我们在命令行上将sonar.branch属性设置为&#34; R7&#34;。

&#34; myapp&#34;的关键项目看起来像

com.example:anapp:R7

&#34;服务器&#34;的关键&#34; myapp&#34;中的模块项目看起来像这样:

com.example:anapp_server:R7

对于使用Ant任务的同一项目,我将属性设置为:

sonar.dynamicAnalysis=reuseReports
sonar.modules=server,ui
sonar.projectBaseDir=...
sonar.projectKey=com.example\:myapp
sonar.projectName=An Application
sonar.projectVersion=7.0

server.sonar.binaries=...
server.sonar.dynamicAnalysis=reuseReports
server.sonar.emma.reportPath=...
server.sonar.java.coveragePlugin=emma
server.sonar.java.source=1.6
server.sonar.language=java
server.sonar.libraries=...
server.sonar.projectBaseDir=...
server.sonar.projectKey=com.example\:anapp_server
server.sonar.projectName=Server
server.sonar.sources=...
server.sonar.surefire.reportsPath=...
server.sonar.tests=...

ui.sonar.dynamicAnalysis=false
ui.sonar.language=flex
ui.sonar.projectBaseDir=...
ui.sonar.projectKey=com.example\:anapp_ui
ui.sonar.projectName=UI
ui.sonar.sources=...

项目的关键字与pom文件相同(&#34; com.example:anapp:R7&#34;);但是,服务器模块密钥看起来像

com.example:anapp:com.example:anapp_server:R7

如果我使用它们发布,这种差异将导致我们丢失模块的历史记录。

我有没有办法指定Ant属性来生成与现有Maven pom文件相同的密钥?

我们的声纳管理员告诉我他可以为我们手动更改密钥,但这将是单调乏味且耗时的。如果我们必须这样做,我们会采取这种做法,但我希望我只是错过一些可以为我们节省大量工作的明显事情。

1 个答案:

答案 0 :(得分:1)

无法在标准的SonarQube样式键中转换Maven样式的键。

所以你的管理员是对的,唯一的办法是通过界面手动更新密钥,如explained on the documentation