ปลั๊กอินใบอนุญาต Maven: ใบอนุญาตที่ไม่รู้จัก

เรากำลังพยายามสร้างไฟล์บุคคลที่สามที่แสดงรายการใบอนุญาตจากไลบรารีที่เราใช้ สำหรับสิ่งนี้ เราใช้ ปลั๊กอิน maven ใบอนุญาต และเป็น เพิ่มเป้าหมายบุคคลที่สาม

มันทำงานได้ดีสำหรับห้องสมุดส่วนใหญ่ของเรา ประเด็นก็คือ การพึ่งพาบางส่วนของเรานั้นเก่ามาก และไม่มีอยู่ใน Maven Central สำหรับคนอื่นๆ เราได้ทำการแก้ไขแล้ว ในทั้งสองกรณี เราจัดเก็บข้อมูลเหล่านั้นไว้ใน repo ของบุคคลที่สามจาก 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 central โดยตรง แน่นอนว่าจะไม่พบมัน เนื่องจากมีเฉพาะใน repo บุคคลที่สามจาก Nexus ภายในของเราเท่านั้น มันอาจจะเป็นปัญหาหรือไม่?   -  person jlengrand    schedule 21.07.2016


คำตอบ (1)


ตามความคิดเห็นของคุณ: คุณได้ตั้งค่า settings.xml ให้ชี้ไปที่ Nexus (มิเรอร์) ของ maven central สำหรับการพึ่งพาที่ดูแลภายในองค์กรหรือไม่?

คุณสามารถกำหนดค่าสิ่งนี้ได้ดังนี้:

<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- settings.html - person Jur_; 21.07.2016