Мой проект SpringBoot зависит от большого проекта Maven:
aSpringBootProject / build.gradle:
...
dependencies {
...
implementation 'my.big:maven.dependency'
...
}
Этот большой проект Maven зависит от подмодуля, который простовключают зависимости:
bigMavenDependency / pom.xml
...
<dependencies>
...
<dependency>
<group>my.big</group>
<artefact>sub.module</artefact>
</dependency>
...
</dependencies>
bigSubModule / pom.xml
...
<package>pom</package>
...
<dependencies>
<!-- a lot of dependencies here -->
</dependencies>
КогдаЯ собираю свой bootJar и запускаю его (java -jar aSpringBootProject.jar
) У меня есть эта ошибка:
Exception in thread "main" java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/sub-module-1.0-SNAPSHOT.pom
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:108)
...
Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/sub-module-1.0-SNAPSHOT.pom'
at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:254)
...
Caused by: java.io.IOException: Unable to find ZIP central directory records after reading 2628 bytes
at org.springframework.boot.loader.jar.CentralDirectoryEndRecord.<init>(CentralDirectoryEndRecord.java:65)
Распаковка моего bootJar дает мне pom-файл, в котором ожидается большое количество jar-файлов.
Команда gradle bootRun
работает как шарм.
Обходной путь - исключить подмодуль и добавить его в качестве зависимости в мой build.gradle:
...
dependencies {
...
implementation 'my.big:maven.dependency' {
exclude 'my.big:sub.module'
}
implementation 'my.big:sub.module'
...
}
Где я ошибаюсь?