Плагин лицензии Maven: неизвестная лицензия

Мы пытаемся создать сторонний файл, в котором перечислены лицензии из используемых нами библиотек. Для этого мы используем лицензирующий плагин maven, и он добавить стороннюю цель.

Он отлично работает для большинства наших библиотек. Дело в том, что некоторые из наших зависимостей ОЧЕНЬ старые и не существуют в Maven Central. для некоторых других мы внесли изменения. В обоих случаях мы сами храним их в стороннем репозитории из нашего Nexus.

Эти библиотеки содержат информацию о лицензии, например следующую:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.company.lib</groupId>
  <artifactId>lib-jcuda</artifactId>
  <version>0.4.2</version>
  <description>POM was created by Sonatype Nexus</description>
  <licenses>
    <license>
      <name>MIT License</name>
      <url>http://www.opensource.org/licenses/mit-license.php</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
</project>

Дело в том, что когда мы запускаем цель, они не распознаются, и мы получаем следующее сообщение:

[WARNING] There are 16 dependencies with no license :
[WARNING]  - com.spacemetric.lib--lib-jcublas--0.4.2
[WARNING]  - com.spacemetric.lib--lib-jcuda--0.4.2
(Unknown license) lib-jcuda (com.spacemetric.lib:lib-jcuda:0.4.2 - no url defined)

При включении флага -X мы получаем дополнительную информацию:

[DEBUG] Verifying availability of C:\Users\me\.m2\repository\com\company\lib\lib-jcuda\0.4.2\lib-jcuda-0.4.2.pom from [central (https://repo.maven.apache.org/maven2, default, releases)]

Если я запускаю код Java, который я создал для тестирования, я могу без проблем увидеть информацию о лицензии:

    MavenXpp3Reader mavenreader = new MavenXpp3Reader();
    String pomfile = "C:\\Users\\me\\.m2\\repository\\com\\company\\lib\\lib-jcuda\\0.4.2\\lib-jcuda-0.4.2.pom";
    try (FileReader reader = new FileReader(pomfile);) {
        Model model = mavenreader.read(reader);
        model.setPomFile(new File(pomfile));
        MavenProject project = new MavenProject(model);

        List<License> licenses = project.getLicenses();
        for (License l : licenses) {
            System.out.println(l.getUrl());
        }
    }
    catch (IOException | XmlPullParserException e) {
        e.printStackTrace();
    }

Есть ли что-то очевидное, что мы упускаем при захвате наших зависимостей? Проблема, кажется, возникает только для библиотек, которые нам пришлось добавить в Nexus, поэтому мы, вероятно, делаем что-то не так.

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


person jlengrand    schedule 20.07.2016    source источник
comment
Возвращаясь к сообщению о проверке доступности, я не понимаю, почему плагин проверяет наличие lib-jcuda в центральном maven напрямую. Конечно, он его не найдет, так как он доступен только в стороннем репозитории из нашего внутреннего Nexus. Может ли это быть проблемой?   -  person jlengrand    schedule 21.07.2016


Ответы (1)


В свете вашего комментария: вы настроили файл settings.xml так, чтобы он указывал на нексус (зеркало) центра maven для внутренних поддерживаемых зависимостей?

Вы можете настроить это примерно так:

<settings>
...
  <mirrors>
    <mirror>
      <id>UK</id>
      <name>UK Central</name>
      <url>http://uk.maven.org/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>
person Jur_    schedule 21.07.2016
comment
см. также maven.apache.org/guides/mini/guide-mirror- настройки.html - person Jur_; 21.07.2016