Plugin Lisensi Maven : Lisensi tidak diketahui

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.


person jlengrand    schedule 20.07.2016    source sumber
comment
Kembali ke pesan pemeriksaan ketersediaan, saya bingung mengapa plugin memeriksa lib-jcuda di maven central secara langsung. Tentu saja tidak akan menemukannya, karena hanya tersedia di repo pihak ketiga dari Nexus internal kami. Mungkinkah itu masalahnya?   -  person jlengrand    schedule 21.07.2016


Jawaban (1)


Mengingat komentar Anda: Sudahkah Anda menyiapkan settings.xml untuk menunjuk ke nexus (cermin) pusat maven untuk dependensi yang dikelola sendiri?

Anda dapat mengonfigurasinya seperti ini:

<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
lihat juga maven.apache.org/guides/mini/guide-mirror- pengaturan.html - person Jur_; 21.07.2016