SonarQube-基于文件系统层次结构的多模块项目
一些名为Foo的CVS存储库有几个模块,例如模块1、模块2、…SonarQube-基于文件系统层次结构的多模块项目,sonarqube,Sonarqube,一些名为Foo的CVS存储库有几个模块,例如模块1、模块2、… buildscript为所有模块执行cvs签出、编译和构建module.jar。 构建完成后,文件系统如下所示: Foo/module1/src /bin /module2/src /bin ... 现在我想这样使用SONAR任务: 定义全局声纳属性,如sonar.username。。。sonar.projektName=Foo用于主项目和sonar.modules=modu
buildscript为所有模块执行cvs签出、编译和构建module.jar。
构建完成后,文件系统如下所示:
Foo/module1/src
/bin
/module2/src
/bin
...
现在我想这样使用SONAR任务:定义全局声纳属性,如sonar.username。。。sonar.projektName=Foo用于主项目和sonar.modules=module1.module2,。。。用于模块。
然后在模块文件夹上循环,设置模块特定的声纳属性,
例如sonar.projectName(用于modulename)sonar.sources、sonar.binaries等
循环工作正常,但sonar似乎希望每个子模块都有一个build.xml。
因此,我需要另一种对模块进行分组的可能性。
我只找到了一个商业插件=>但需要另一个解决方案 --编辑--
我已经找到并尝试使用和中的示例,但它们似乎需要一个主构建文件和每个模块文件夹中的build.xml。
但我的情况不同。对于我项目的每个模块,只有一个build.xml包含javac+jar目标。构建完成后,生成的文件系统如上文所述。
构建是部署工作流的一部分,该工作流由xmlproperty文件驱动,该文件包含该部署作业的projectname和所有ModuleName等内容。
现在,在构建完成后,在下一个Ant文件中,我想通过xmltask循环该xmlproperty文件中的模块,将特定于模块的属性指向文件系统f.e.sonar.sources=/Foo/module1/src sonar.binaries=/Foo/module1/bin,并调用
。通过
毕竟,它只是在现有文件系统上循环设置sonar权限,并使用适当的属性调用sonar任务。
--评论后编辑--
像那样尝试:
build.xml
<project name="sonar" xmlns:fl="antlib:it.haefelinger.flaka" xmlns:sonar="antlib:org.sonar.ant">
<fl:install-property-handler/>
<!-- Import Sonar -->
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"/>
<!-- Import XMLTask -->
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask"/>
<xmltask source="C:/WKS/Eclipse/372/sonar/props.xml">
<copy path="//project/name/text()" property="projectname"/>
<copy path="//module/*/label/text()" property="projectlabel"/>
<copy path="//module/*/name/text()" property="modules" append="true" propertyseparator="," />
</xmltask>
<property name="sonar.projectKey" value="${projectname}"/>
<!-- Set modules IDs -->
<property name="sonar.modules" value="#{replace('${modules}', '', ' ')}"/>
<property name="sonar.language" value="java" />
<property name="sonar.sourceEncoding" value="UTF-8" />
<property name="sonar.host.url" value="http://somehost:9000" />
<property name="sonar.login" value="admin" />
<property name="sonar.password" value="admin" />
<xmltask source="C:/WKS/Eclipse/372/sonar/props.xml">
<call path="//module/*">
<param path="label/text()" name="modullabel"/>
<param path="name/text()" name="modulname"/>
<actions>
<fl:let>
sonar.projectName ::= replace('@{modulname}', '', ' ')
sonar.projectVersion ::= '@{modullabel}'
sonar.#{replace('@{modulname}', '', ' ')}.projectBaseDir ::= '${ant.working.dir}/build/projects/${projectname}/@{modulname}'
sonar.sources ::= '${ant.working.dir}/build/projects/${projectname}/@{modulname}/src'
sonar.binaries ::= '${ant.working.dir}/build/results/compile/${projectname}/@{modulname}'
</fl:let>
<!-- Execute Sonar -->
<sonar:sonar />
</actions>
</call>
</xmltask>
</project>
我还尝试将basedir属性设置为我的${ant.working.dir}的值,所有二进制文件和src文件夹都位于该值处,但也没有起作用。请参阅文档:
示例:参见文档:
示例:参见文档:
示例:参见文档:
例如:我也有类似的问题。从eclipse运行ant任务时,不会显示sonar错误。因此,我在命令控制台执行ant ask时发现了问题 我有两个问题:
我也有类似的问题。从eclipse运行ant任务时,不会显示sonar错误。因此,我在命令控制台执行ant ask时发现了问题 我有两个问题:
我也有类似的问题。从eclipse运行ant任务时,不会显示sonar错误。因此,我在命令控制台执行ant ask时发现了问题 我有两个问题:
我也有类似的问题。从eclipse运行ant任务时,不会显示sonar错误。因此,我在命令控制台执行ant ask时发现了问题 我有两个问题:
谢谢,已经找到了,但它对我不起作用,请参阅我的答案中的--EDIT--。在这种情况下,如果要在单个配置文件中配置所有内容,还可以查看以下示例:。有基于SonarRunner的,但您可以在Sonar Ant任务中执行完全相同的操作。感谢已经在该方向尝试过的提示,请参阅第二个--编辑--但它不起作用。两个链接现在都已失效:(谢谢,已经找到了,但它对我不起作用,请参阅我的答案中的--EDIT--。在这种情况下,如果您想在单个配置文件中配置所有内容,还可以查看以下示例:。有基于SonarRunner的示例,但您可以在Sonar Ant任务中执行完全相同的操作。感谢您的提示,已经在tha中尝试过t方向,请参见第二个--编辑--但它不起作用。两个链接现在都已失效:(谢谢,已经找到了,但它对我不起作用,请参阅我的答案中的--EDIT--。在这种情况下,如果您想在单个配置文件中配置所有内容,还可以查看以下示例:。有基于SonarRunner的示例,但您可以在Sonar Ant任务中执行完全相同的操作。感谢您的提示,已经在tha中尝试过t方向,请参见第二个--编辑--但它不起作用。两个链接现在都已失效:(谢谢,已经找到了,但它对我不起作用,请参阅我的答案中的--EDIT--。在这种情况下,如果您想在单个配置文件中配置所有内容,还可以查看以下示例:。有基于SonarRunner的示例,但您可以在Sonar Ant任务中执行完全相同的操作。感谢您的提示,已经在tha中尝试过t方向,请参见第二个--编辑--但它不起作用。两个链接现在都已失效:(
Setting project property: modules -> Modul 1,Modul 2,Modul 3,Modul 4
Setting project property: sonar.projectKey -> Foobar
Setting project property: sonar.modules -> Modul1,Modul2,Modul3,Modul4
Setting project property: ant.working.dir -> c:\WKS\5513
Setting project property: sonar.language -> java
Setting project property: sonar.sourceEncoding -> UTF-8
Setting project property: sonar.host.url -> http://somehost:9000
Setting project property: sonar.login -> admin
Setting project property: sonar.password -> admin
Setting project property: sonar.projectName -> Modul1
Setting project property: sonar.projectVersion -> l_5_04_52_cd
Setting project property: sonar.Modul1.projectBaseDir -> c:\WKS\5513/build/projects/foobar/Modul 1
Setting project property: sonar.sources -> c:\WKS\5513/build/projects/foobar/Modul 1/src
Setting project property: sonar.binaries -> c:\WKS\5513/build/results/compile/foobar/Modul 1
parsing buildfile jar:file:/C:/WKS/Eclipse/372/DevJars/sonar/sonar-ant-task-2.1.jar!/org/sonar/ant/antlib.xml with URI = jar:file:/C:/WKS/Eclipse/372/DevJars/sonar/sonar-ant-task-2.1.jar!/org/sonar/ant/antlib.xml from a zip file
Class org.sonar.ant.SonarTask loaded from parent loader (parentFirst)
[sonar:sonar] Apache Ant(TM) version 1.9.1 compiled on May 15 2013
[sonar:sonar] Sonar Ant Task version: 2.1
[sonar:sonar] Loaded from: file:/C:/WKS/Eclipse/372/DevJars/sonar/sonar-ant-task-2.1.jar
[sonar:sonar] INFO: Default locale: "de_DE", source code encoding: "UTF-8"
[sonar:sonar] INFO: Work directory: C:\WKS\sonar
[sonar:sonar] INFO: Sonar Server 3.7.2
BUILD FAILED
C:\WKS\Eclipse\372\sonar\sonar.xml:41: The following error occurred while executing this line:
C:\WKS\Eclipse\372\sonar\sonar.xml:54: org.sonar.runner.impl.RunnerException: Unable to execute Sonar
...
Caused by: java.lang.IllegalStateException: The base directory of the module 'Modul1' does not exist: C:\WKS\Eclipse\372\sonar\Modul 1