Плагин сборки Maven не может получить путь к классам из манифеста - PullRequest
0 голосов
/ 28 мая 2020

Я хочу создать исполняемый файл jar, используя maven-assembly-plugin , используя другой файл jar, но я наткнулся на проблему, касающуюся записи Class-Path в манифесте.

Я определил манифест запись, как показано ниже:

<archive>
    <addMavenDescriptor>false</addMavenDescriptor>
    <manifest>
        <mainClass>exe.MyMain</mainClass>
    </manifest>
    <manifestEntries>
        <Class-Path>lib/jar_1.jar</Class-Path>
    </manifestEntries>
</archive>

И мой META-INF/MANIFEST.MF правильно сгенерирован:

Manifest-Version: 1.0
Class-Path: lib/jar_1.jar
Build-Jdk-Spec: 1.8
Created-By: Maven Archiver 3.5.0
Main-Class: exe.MyMain

Но когда я пытаюсь выполнить jar, который в основном пытается загрузить класс из jar_1.jar, выполнение завершается неудачно.

С другой стороны, если я вручную создаю ту же банку, что и из maven-assembly-plugin , она работает должным образом.

Вот минимальный проект, воспроизводящий проблему: https://github.com/aveuiller/maven_assembly_plugin_classpath_bug_reproduction

С моей точки зрения, оба файла одинаковы, и я не могу точно определить, почему файл jar, созданный maven-assembly-plugin не удается загрузить внешнюю зависимость. Вы хоть представляете, почему это не удается?

...