Короткая версия
Когда maven assembly plugin
создает jar-with-dependencies
, он берет первый META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModulefile
, который находит и игнорирует все остальные.
Как я могуСобрать проект в виде толстого фляги, чтобы он распознавал все классы расширения Groovy?
Длинная версия
У меня есть проект Groovy, который начинается с этой строки кода:
def today = new Date().clearTime().toTimestamp()
Мой проект собирается и работает нормально.Теперь мне нужно упаковать его в проект конверта - технически создать отдельный проект с зависимостью от моего проекта в виде толстой фляги (jar-with-dependencies
, используя maven assembly plugin
) - и запустить его из ALM (программного обеспечения для управления тестированием).
Теперь Groovy 2.5.8 состоит из ряда модулей (groovy-dateutil.jar
и groovy-sql.jar
, среди прочего - больше нет доступного groovy-all.jar), иу каждого модуля есть свой собственный META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModule
файл, определяющий классы расширения.
Проблема в том, что когда плагин сборки maven создает JAR-файл с зависимостями, он захватывает первый найденный файл ExtensionModule и игнорирует все остальные.Поэтому, какую бы нестандартную зависимость я ни объявил в начале pom.xml
моего проекта, классы расширений этого модуля будут мне доступны, когда я запусту толстый jar, а любые другие вызовут сбой проекта во время выполнения.У меня может быть либо Date().clearTime()
, либо Date().toTimestamp()
, но не оба: (
Теперь я могу вручную редактировать файл ExtensionModule внутри толстого фляги, добавляя все нужные мне классы расширений. Однако каждыйКогда я внесу изменения в проект mu, мне нужно перестроить его и конвертирующий проект в виде толстой банки (115 Мб), поэтому ручное редактирование файла каждый раз будет утомительным.
Я пробовал использовать сборку mavenплагин с дескриптором контейнера 'file-aggregate', но он добавляет все содержимое каждого файла, а не добавляет классы расширения в строку ExtensionClasses=
, поэтому конечный результат тоже не работает. Я также пытался использовать mavenплагин shade, но он сделал то же самое, что и плагин сборки maven. Я не изучил ни одного из его расширенных параметров. Я также слышал, что есть плагин Groovy Eclipse maven.
Что мне следует использоватьсобрать толстую банку со всеми классными классами расширения, работающими как обычно?
Настройка
-Java 11.0.3
-Groovy 2.5.8
-Spock 1.3-groovy-2.5
-IntelliJ IDEA 2019.1
-Maven 3.5
-Maven compiler plugin
-Maven build helper plugin
-Maven assembly plugin 3.8.1