我們正在嘗試創建一個第三方文件,其中列出了我們正在使用的庫中的許可證。爲此,我們使用license maven plugin及其add third party目標。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 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的庫中,所以我們可能做錯了什麼。
我已經看了很多文件,以及插件的來源,但無法找到爲什麼許可證沒有考慮到這些庫。
感謝,
再回到可用性檢查的消息,我很困惑,爲什麼在行家的LIB-jcuda插件檢查中央直接。它當然不會找到它,因爲它只在我們內部的Nexus的第三方回購中可用。這可能是問題嗎? – jlengrand