2014-01-27 3 views
0

Получение сообщения об ошибке при попытке выполнить скрипт ant: Префикс «сонар» для элемента «сонар: сонар» не связан.Сонар с ошибкой установки Ant

Я знаю, что мой муравей настроен правильно, потому что, когда я вынимаю следующие части сонара, он строит отлично, и сонар настроен правильно, потому что я успешно анализировал проекты с maven.

Добавлены следующие три фрагмента текста к коду:

**<!-- Define the Sonar properties --> 
<property name="sonar.projectKey" value="org.codehaus.sonar:example-java-ant" /> 
<property name="sonar.projectName" value="Simple Java Project analyzed with the Sonar Ant Task" /> 
<property name="sonar.projectVersion" value="1.0" /> 
<property name="sonar.language" value="java" /> 
<property name="sonar.sources" value="${source.dir}" /> 
<property name="sonar.binaries" value="${libs.dir}" /> 
<property name="sonar.sourceEncoding" value="UTF-8" /> 


<!-- Add your basic Sonar configuration below: sonar.jdbc.url, sonar.jdbc.username, etc. properties --> 
<property name="sonar.jdbc.url" value="jdbc:sqlserver://server;databaseName=Sonar;selectMethod=cursor;" /> 
<property name="sonar.jdbc.username" value="sonar" /> 
<property name="sonar.jdbc.password" value="sonarPass" /> 

Затем я создал новую цель и добавил сонар для моего заказа сборки.

<!-- ========= Define Sonar target ========= --> 
<target name="sonar" depends="compile"> 
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"> 
     <!-- Update the following line, or put the "sonar-ant-task-*.jar" file in your "$HOME/.ant/lib" folder --> 
     <classpath path="C:\sonarqube-4.1\lib\sonar-ant-task-2.1.jar" /> 
    </taskdef> 

    <!-- Execute Sonar --> 
    <sonar:sonar /> 
</target> 

Ошибка возникает на <sonar:sonar /> линии, и так как он ломает так быстро, не запуская никаких других задач, я думаю, что проблема заключается в прекомпилятором нахождение библиотеки.

Я разместил сонар-ant-task-2.1.jar как можно больше мест, попытался добавить свой путь через переменные окружения и попробовал несколько разных способов указания пути. Любая идея о том, почему муравьи не собираются в библиотеке или как я могу устранить эту проблему, будет очень благодарна.

ответ

4

Это ошибка синтаксического анализа XML. Вы должны объявить «сонар» пространство имен в верхней части файла сборка:

<project .... xmlns:sonar="antlib:org.sonar.ant"> 

Это то, что позволяет «сонар» префикс перед именем задачи.

<sonar:sonar/> 
+0

Вы попали в гвоздь на голове, большое спасибо sir – Cole9350

+0

Это довольно распространенная игра! –

0

Я бы порекомендовал вам не добавлять файлы jar без разбора в различные каталоги - старайтесь иметь именно то, что вам нужно, где именно вам это нужно, и ничего более. Для того, чтобы понять, почему Ant не находит свою задачу эхолота, вы можете попытаться запустить его в режиме «многословной»:

ant -v 

Если вы можете сделать то же самое с Maven, вы можете попробовать

mvn -X 

в сравните, как Maven может добиться успеха. Удачи!

+0

Я хотел бы упомянуть, я уже работать в расширенном режиме трассировки стека буквально бесполезно. Вызывается org.xml.sax.SAXParseException ... Также, чтобы уточнить, я никогда не помещал банку в несколько мест, а просто пытался перемещать ее и изменять пути. – Cole9350

0

Я использовал приведенный ниже код. Он работал нормально.

<!-- Define the SonarQube target --> 
<target name="sonar" xmlns:sonar="antlib:org.sonar.ant"> 

    <property name="mysonar.organizationName" value="myProject"/> 
    <property name="sonar.projectName" value="SonarDemo" /> 
    <property name="sonar.projectKey" value="${mysonar.organizationName}:${sonar.projectName}" /> 
    <!-- project version--> 
    <property name="sonar.projectVersion" value="1.0" /> 
    <!-- location source files --> 
    <property name="sonar.sources" value="${src}" /> 

    <!-- location of binaries after compilation--> 
    <property name="sonar.binaries" value="${build}"/> 

    <!-- location of sonar library--> 
    <sonar:sonar xmlns:sonar="antlib:org.sonar.ant"> 
    </sonar:sonar> 

</target> 
0

Ниже код работал с помощью муравьев и sonarqube

<project name="abcPrj" basedir="." xmlns:sonar="antlib:org.sonar.ant"> 
<property name="src.dir" value="src" /> 
<property name="build.dir" value="target" /> 
<property name="classes.dir" value="${build.dir}/classes" /> 
<property name="lib.dir" value="web/WEB-INF/lib" /> 
<property name="webClasses.dir" value="web/WEB-INF/classes" /> 
<property name="tomcat.home" value="C:\apache-tomcat-8.0.28" /> 

<path id="tomcat.classpath"> 
    <fileset dir="${tomcat.home}/bin"> 
     <include name="**/*.jar" /> 
    </fileset> 
    <fileset dir="${tomcat.home}/lib"> 
     <include name="**/*.jar" /> 
    </fileset> 
</path> 

<target name="clean"> 
    <delete dir="${build.dir}" /> 
</target> 

<target name="init"> 
    <mkdir dir="${build.dir}" /> 
    <mkdir dir="${classes.dir}" /> 
</target> 

<target name="compile" depends="init"> 
    <path id="java.classpath"> 
     <fileset dir="${lib.dir}"> 
      <include name="**/*.jar" /> 
     </fileset> 
    </path> 

    <javac destdir="${classes.dir}" fork="true" memoryInitialSize="512m" memoryMaximumSize="1024m" debug="true" 
     srcdir="${src.dir}"> 
     <classpath refid="java.classpath" /> 
     <classpath refid="tomcat.classpath" /> 
    </javac> 

    <echo message="build done done done" /> 
</target> 

<target name="sonar" depends="compile"> 
    <taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml"> 
     <classpath path="C:\dev\ant-libs\sonar-ant-task-2.2.jar" /> 
    </taskdef> 

    <property name="sonar.host.url" value="http://localhost:9000" /> 
    <property name="sonar.projectKey" value="com.abc:xyz" /> 
    <property name="sonar.projectName" value="Example of SonarQube Scanner for Ant Usage" /> 
    <property name="sonar.projectVersion" value="1.0" /> 

    <property name="sonar.sources" value="${src.dir}" /> 
    <property name="sonar.java.binaries" value="${webClasses.dir}" /> 
    <property name="sonar.java.libraries" value="${lib.dir}/*.jar" /> 

    <!-- Execute SonarQube Scanner for Ant Analysis --> 
    <sonar:sonar /> 
</target> 

<target name="all" depends="clean, init, compile, sonar" /> 

Смежные вопросы