У меня есть проект, который генерирует некоторые классы и ресурсы, которые затем должны быть упакованы в банку.Как использовать maven для генерации кода и упаковки без зависимостей?
Класс, который выполняет генерацию, имеет несколько зависимостей. Сгенерированные классы не имеют зависимостей.
Моим первоначальным решением было использовать плагин сборки maven для включения только сгенерированных файлов. К сожалению, упакованный pom включает все зависимости, необходимые для генерации. Потребители этой банки вытягивают кучу ненужных зависимостей.
Я заглянул в плагин maven shade. Я компилирую один раз, запускаю класс генератора с плагином mojo's exec, компилируем последний раз. Тогда оттенок, конечно, проходит в фазе упаковки. Он создает dependency-reduced-pom.xml
без чрезмерных зависимостей. Поэтому запустите mvn clean package
и посмотрите target/foo.jar
. Я ожидаю, что банка в папке meta-inf станет уменьшенной баной зависимости. Но это полный пом. Я не знаю, как сгенерированный pom заменит тот, который упакован.
Еще одно плохое решение, которое я пробовал, - это использование нескольких профилей с их собственной зависимостью. Я запускаю maven один раз с генерирующим профилем, а затем снова с профилем упаковки. Это работает, но отстой, потому что вам нужно запустить несколько команд maven. Это не дружелюбно.
Я иду об этом неправильно? Как мне следует организовать проект, который генерирует некоторый код и некоторые текстовые файлы, которые затем упаковываются в артефакт, дружный с maven?
Как вы звоните в генератор? Из теста? exec: java в течение одной фазы? Является ли ваш класс генератора частью проекта? Класс вашего генератора зависит (время компиляции) от классов вашего проекта? –