Kami mencoba membuat file pihak ketiga yang mencantumkan lisensi dari perpustakaan yang kami gunakan. Untuk ini, kami menggunakan plugin pakar lisensi dan tambahkan target pihak ketiga.
Ini berfungsi dengan baik, untuk sebagian besar perpustakaan kami. Masalahnya, beberapa ketergantungan kita SANGAT lama, dan tidak ada di Maven Central. untuk beberapa lainnya, kami telah melakukan modifikasi. Dalam kedua kasus tersebut, kami menyimpannya sendiri di repo Pihak Ketiga dari Nexus kami.
Pustaka ini memang berisi informasi lisensi, misalnya sebagai berikut :
<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>
Masalahnya, ketika kita menjalankan target mereka tidak dikenali, dan kita mendapat pesan berikut:
[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)
Saat mengaktifkan tanda -X, kami mendapatkan beberapa informasi tambahan :
[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)]
Jika saya menjalankan beberapa kode Java yang saya buat untuk diuji, saya dapat melihat informasi lisensi tanpa masalah:
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();
}
Apakah ada sesuatu yang jelas-jelas kita lewatkan saat mengambil dependensi kita? Masalahnya sepertinya hanya muncul pada perpustakaan yang harus kami tambahkan sendiri ke Nexus, jadi kami mungkin melakukan kesalahan.
Saya telah cukup banyak melihat dokumennya, serta sumber pluginnya, tetapi tidak dapat menemukan mengapa lisensi tidak diperhitungkan untuk perpustakaan tersebut.