Maven许可证插件:未知许可证

时间:2016-07-20 21:42:50

标签: java maven maven-plugin license-maven-plugin

我们正在尝试创建第三方文件,列出我们正在使用的库中的许可证。为此,我们使用license maven plugin及其add third party目标。

对于我们的大多数图书馆来说,它运作良好。 事实上,我们的一些依赖是非常古老的,并且在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 is 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的库中,所以我们可能做错了。

我已经查看了很多文档,以及插件的来源,但无法找到为什么不考虑这些库的许可证。

谢谢,

1 个答案:

答案 0 :(得分:0)

根据您的评论:您是否已将settings.xml设置为指向内部维护依赖项的maven central的nexus(镜像)?

你可以这样配置:

<settings>
...
  <mirrors>
    <mirror>
      <id>UK</id>
      <name>UK Central</name>
      <url>http://uk.maven.org/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
  ...
</settings>