爲了簡單起見,我設置了一個Sonar項目(使用delphi插件),假定有兩個模塊需要報告。使用Ant配置聲吶模塊的build.xml文件
每個模塊都在它自己的子文件夾中,每個模塊都有自己的build.xml文件。
此時我可以成功運行聲納任務併爲每個模塊生成報告作爲獨立項目。
我的問題是配置「主」build.xml文件。
模塊build.xml文件看起來是這樣的:
<?xml version="1.0"?>
<project name = "CRM" default = "sonar" basedir = ".">
<!-- Add the Sonar task -->
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath path="c:/ANT/lib" />
</taskdef>
<target name="sonar">
<property name="sonar.projectKey" value="EXO:CRM" />
<property name="sonar.host.url" value="http://localhost:9000" />
<sonar:sonar workDir="." key="CRM.key" version="0.1" xmlns:sonar="antlib:org.sonar.ant">
<property key="sonar.sources" value="." /> <!-- project sources directories (required) -->
<property key="sonar.language" value="delph" /> <!-- project language -->
<property key="sonar.delphi.codecoverage.excluded" value=".\tests" /> <!-- code coverage excluded directories -->
<property key="sonar.importSources" value="true" /> <!-- should we show sources or not? -->
<property key="sonar.delphi.sources.excluded" value="" /> <!-- excluded directories -->
<property key="sonar.delphi.sources.include" value=".\includes" /> <!-- include directories, "," separated -->
<property key="sonar.delphi.sources.include.extend" value="true" /> <!-- should we extend includes in files? -->
</sonar:sonar>
</target>
</project>
「大師」 的build.xml如下:
<?xml version="1.0"?>
<project name = "EXO" default = "sonar" basedir = ".">
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath path="c:/ANT/lib" />
</taskdef>
<target name="sonar">
<property name="sonar.modules" value="exonet6000/build.xml,CRM/build.xml" />
<sonar:sonar workDir="." key="EXO.key" version="0.1" xmlns:sonar="antlib:org.sonar.ant">
<!-- project sources directories (required) -->
<property key="sonar.sources" value="." />
<property key="sonar.language" value="delph" />
<property key="sonar.importSources" value="true" />
<property key="sonar.delphi.sources.excluded" value="" />
<property key="sonar.delphi.sources.include" value=".\includes" />
<property key="sonar.delphi.sources.include.extend" value="true" />
</sonar:sonar>
</target>
</project>
它總是掃描所有資源(需要的值),即它不尊重我的模塊。 我能得到這個工作,目前唯一的辦法是通過限制這樣的
<property key="sonar.sources" value="./crm/,./exonet6000/" />
源代碼,我敢肯定,我一定是誤配置的東西在這裏很明顯。
編輯:我現在有什麼,我相信是基於這裏的例子更一致的文件集https://github.com/SonarSource/sonar-examples/tree/master/projects/languages/java/java-ant-modules
主生成文件:
<?xml version="1.0" encoding="UTF-8"?>
<project name = "EXO" default = "sonar" basedir = "." xmlns:sonar="antlib:org.sonar.ant">
<echo>Root Project</echo>
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath path="c:/ANT/lib" />
</taskdef>
<property name="sonar.host.url" value="http://localhost:9000" />
<property name="sonar.modules" value="exonet6000/build.xml,CRM/build.xml" />
<target name="sonar">
<sonar:sonar key="EXO.key" version="0.1">
</sonar:sonar>
</target>
</project>
和子模塊的一個文件
<?xml version="1.0" encoding="UTF-8"?>
<project name="CRM" default="all" basedir=".">
<echo>CRM Module</echo>
<property name="sonar.language" value="delph" />
<property name="sonar.projectKey" value="EXO:CRM" />
<property name="sonar.sources" value="." />
<target name="all" />
</project>
此時聲納進程正在成功完成,但沒有進行實際的分析。關鍵是我沒有看到子模塊的回顯,所以我懷疑這些構建任務並未實際運行。
直到今天還沒有聽說過。感謝提醒我它的存在。 –
是 ... 標籤在master build.xml中是否需要?你可以做的另一件事是用調試標誌運行ant,比如'ant -d'。這會在執行任務期間轉儲更多關於正在發生的事情的信息,並希望給您更多提示。 –
Hendra
'value =「delph」'是一個錯字嗎?它看起來像我失蹤。 – mjn