sonar-dotnet-shared-library не компилируется из-за несуществующих зависимостей. Как заставить ее работать?

Я пытаюсь скомпилировать на своей машине плагин sonar-csharp, но в файле pom.xml есть две зависимости, которых нет в общедоступные репозитории Maven:

<dependency>
  <groupId>org.sonarsource.dotnet</groupId>
  <artifactId>sonar-dotnet-tests-library</artifactId>
  <version>1.5.0.393</version>
</dependency>
<dependency>
  <groupId>org.sonarsource.dotnet</groupId>
  <artifactId>sonar-dotnet-shared-library</artifactId>
  <version>1.0.1.138</version>
</dependency>

Я загружаю код обоих проектов и пытаюсь скомпилировать их и создать файлы .jar для каждого из них.

Пытаясь скомпилировать sonar-dotnet-shared-library-1.0.1.138, я установил https://www.nuget.org/packages/SonarAnalyzer.CSharp/1.20.0 и приступайте к его установке в моем локальном репозитории maven, а затем, когда я компилирую sonar-dotnet-shared-library-1.0.1.138, я получить :

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (unzip-nuget) on project sonar-dotnet-shared-library: An Ant Build Exception has occured: C:\Temp\sonar-dotnet-shared-library-1.0.1.138\target\analyzer\SonarAnalyzer.Scanner\protobuf does not exist.
[ERROR] around Ant part ...<copy todir="src/main/protobuf">... @ 8:35 in C:\Temp\sonar-dotnet-shared-library-1.0.1.138\target\antrun\build-main.xml

Я думаю, что я в аду Maven.

Что мне нужно сделать, чтобы собрать код из последнего релиза sonar-csharp-plugin??

Редактировать: когда я устанавливал SonarAnalyzer, я использовал

mvn install:install-file -DgroupId=org.sonarsource.dotnet -DartifactId=SonarAnalyzer.Scanner -Dversion=1.20.0 -Dpackaging=nupkg -Dfile="C:\Temp\SonarAnalyzer.CSharp.1.20.0-RC1.nupkg"

Я отключаю задачи, которые генерируют ошибку, теперь java-код начинает свою компиляцию, но я получаю ошибки, связанные с

import org.sonarsource.dotnet.protobuf.SonarAnalyzer;

Я думаю, что это ссылка на SonarAnalyzer Dll, но ни Eclipse, ни Maven не могут ее найти (protobuf отсутствует)

Изменить2:

POM.XML включает следующие задачи:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>unzip-nuget</id>
            <phase>validate</phase>
            <configuration>
              <exportAntProperties>true</exportAntProperties>
              <tasks>
                <unzip src="${sonarAnalyzer.workDirectory}/SonarAnalyzer.Scanner.nupkg" dest="${sonarAnalyzer.workDirectory}/SonarAnalyzer.Scanner/" />
                <delete>
                  <fileset dir="src/main/protobuf" excludes=".gitignore"></fileset>
                </delete>
                <copy todir="src/main/protobuf">
                  <fileset dir="${sonarAnalyzer.workDirectory}/SonarAnalyzer.Scanner/protobuf">
                    <include name="*.proto"/>
                  </fileset>
                </copy>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
          <execution>
            <id>compile-protobuf-sources</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <fileset id="fileset" dir="${project.basedir}/src/main/protobuf">
                  <include name="*.proto" />
                </fileset>
                <pathconvert refid="fileset" property="protos" pathsep=" " />
                <mkdir dir="${project.build.directory}/generated-sources/protobuf" />
                <chmod file="${protobuf.compiler}" perm="u+x" />

                <exec failonerror="true" executable="${protobuf.compiler}">
                  <arg value="proto_path=${project.basedir}/src/main/protobuf" />
                  <arg value="java_out=${project.build.directory}/generated-sources/protobuf" />
                  <arg line="${protos}" />
                </exec>  

              </target>
            </configuration>
          </execution>
        </executions>

Как я понимаю, в SonarAnalyzer.Scanner.nupkg должна быть папка protobuf, а содержимое этой папки копируется в src/main/protobuf.....ну SonarAnalyzer.Scanner.nupkg скачанный с Nuget не содержит этого папка....итак....

ребята из Sonar...... Где взять этот nupkg?


person XtianGIS    schedule 09.11.2016    source источник
comment
Кто-нибудь знает, где находится org.sonarsource.dotnet.protobuf.SonarAnalyzer???   -  person XtianGIS    schedule 10.11.2016
comment
Я скачал файл nuppkg с github, и он не содержит ожидаемых файлов. :'(   -  person XtianGIS    schedule 15.11.2016


Ответы (1)


У меня была та же проблема, я нашел решение в этой теме из группы Google SonarQube.

Вам нужно получить недостающие артефакты с сервера Artifactory sonarsource.
Как предложил Дуарте Менесес, вы можете добавить эти строки в [user_home]/.m2/settings.xml:

<profiles>
  <profile>
    <id>sonarsource-repo</id>
    <activation>
      <property>
        <name>!skip-sonarsource-repo</name>
      </property>
    </activation>
    <repositories>
      <repository>
        <id>sonarsource</id>
        <name>SonarSource Central Repository</name>
        <url>https://repox.sonarsource.com/sonarsource</url>
        <releases>
          <enabled>true</enabled>
          <updatePolicy>interval:60</updatePolicy>
          <checksumPolicy>fail</checksumPolicy>
        </releases>
        <snapshots>
          <enabled>false</enabled>
          <updatePolicy>never</updatePolicy>
        </snapshots>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <id>sonarsource</id>
        <name>SonarSource Central Repository</name>
        <url>https://repox.sonarsource.com/sonarsource</url>
        <releases>
          <enabled>true</enabled>
          <!-- no need to always check if new versions are available when
          executing a maven plugin without specifying the version -->
          <updatePolicy>interval:60</updatePolicy>
          <checksumPolicy>fail</checksumPolicy>
        </releases>
        <snapshots>
          <enabled>false</enabled>
          <updatePolicy>never</updatePolicy>
        </snapshots>
      </pluginRepository>
    </pluginRepositories>
  </profile>
</profiles>

Я использовал приведенную выше конфигурацию.
У меня также были зеркала, объявленные в моем файле settings.xml, поэтому мне пришлось исключить sonarsource из зеркальных репозиториев:

<mirrors>
  <mirror>
    <id>nexus</id>
    <mirrorOf>*,!sonarsource</mirrorOf>
    <url>http://ci-server/nexus/content/groups/public</url>
  </mirror>     
</mirrors>

Конечно, есть и другие способы добиться того же результата, например, объявив прокси-репозиторий на сервере Nexus вашей компании.

С этой конфигурацией я успешно построил SonarQube.

person lbndev    schedule 31.01.2017