Знаток: Как мое заклинание может получить доступ к своим собственным ресурсам?

У меня есть проект (здесь названный моим-артефактом), который должен генерировать источники из образцового файла. Я создал плагин знатока (мой-генератор-кода), который используется, как описано в выборке 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 </источник>
                                </источники>
                        </конфигурация>
                </выполнение>
        </выполнение>
</плагин>

5
задан anonymous 20 February 2010 в 21:16
поделиться

2 ответа

Путем включения их в jar-файл плагина и обращения к ним через classpath, через ClassLoader.getResourceAsStream.

Упаковывая их как другой артефакт, объявляя их как зависимость и вызывая API разрешения зависимостей, что требует гораздо больше работы.

3
ответ дан 14 December 2019 в 04:36
поделиться

Просто используйте ClassLoader, чтобы получить ресурсы из плагина MyCodeGenerator Maven.

Добавьте что-то подобное в свой MyCodeGeneratorMojo

    URL getTemplate(String fileName) {
        return this.getClass().getResource(fileName);
    }

В плагине MyCodeGenerator Maven добавьте шаблон (ы) в каталог src / main / resources (не забудьте использовать правильную запись пакета (каталоги) в этом каталоге).

5
ответ дан 14 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: