У меня есть проект (здесь названный моим-артефактом), который должен генерировать источники из образцового файла. Я создал плагин знатока (мой-генератор-кода), который используется, как описано в выборке pom.xml ниже. Это загружает и обрабатывает model.xml от ресурсов моего-артефакта и генерирует код с помощью некоторых предопределенных шаблонов, сохраненных в плагине. Вопрос состоит в том, как мой-генератор-кода мог получить доступ к этим шаблонам, поскольку они не находятся в ресурсах проекта, а в его собственных ресурсах.
Заранее спасибо
<плагин>
<groupId> моя-группа </groupId>
<artifactId> мой-генератор-кода </artifactId>
<версия>, С 0.0.1 СНИМКАМИ </версия>
<конфигурация>
<modelfile>
src/main/resources/model.xml
</modelDir>
</конфигурация>
<выполнение>
<выполнение>
<фаза> генерировать-источники </фаза>
<цели>
<цель> генерировать-модель </цель>
</цели>
</выполнение>
</выполнение>
</плагин>
<плагин>
<groupId> org.codehaus.mojo </groupId>
<artifactId> build-helper-maven-plugin </artifactId>
<выполнение>
<выполнение>
<идентификатор> добавлять-источник </идентификатор>
<фаза> генерировать-источники </фаза>
<цели>
<цель> добавлять-источник </цель>
<источники>
<источник> target/generated-sources </источник>
</источники>
</конфигурация>
</выполнение>
</выполнение>
</плагин>
Путем включения их в jar-файл плагина и обращения к ним через classpath, через ClassLoader.getResourceAsStream.
Упаковывая их как другой артефакт, объявляя их как зависимость и вызывая API разрешения зависимостей, что требует гораздо больше работы.
Просто используйте ClassLoader, чтобы получить ресурсы из плагина MyCodeGenerator Maven.
Добавьте что-то подобное в свой MyCodeGeneratorMojo
URL getTemplate(String fileName) {
return this.getClass().getResource(fileName);
}
В плагине MyCodeGenerator Maven добавьте шаблон (ы) в каталог src / main / resources
(не забудьте использовать правильную запись пакета (каталоги) в этом каталоге).