Как подавить замену свойств при создании проекта на основе архетипа?
-
18-09-2019 - |
Вопрос
Я пытаюсь создать архтип для простого проекта. Этот проект содержит несколько сертификатов SSL, которые я хотел бы включить в качестве ресурсов в архтип, чтобы при создании проекта эти сертификаты стали его частью.Моя проблема в том, что maven пытается заменить свойства этих сертификатов при создании проекта с архетипом.Можно ли как-нибудь сказать maven не выполнять замену свойства?Я уже пробовал следующее:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
в моем прототипе POM.xml.Есть идеи?
Решение
Я не уверен, в чем именно заключается ваша проблема (являются ли ваши сертификаты XML-файлами??), но я предполагаю, что это связано с тем фактом, что большая часть недвоичного содержимого архетипа обрабатывается по скорости во время создания (см. АРХЕТИП-90 об этой проблеме).
Обходной путь — настроить создать из проекта mojo, чтобы файл не фильтровался по умолчанию, используя:
-Darchetype.filteredExtentions=ext1,ext2,...
Он устанавливает расширения для файлов, которые будут фильтроваться, а значение по умолчанию включает java
, xml
, txt
, vm
, groovy
, jsp
, gsp
, vm
и properties
.Так что исключите xml
из этого списка, если ты не хочешь xml
фильтровать.
Другой вариант — указать собственные метаданные для вашего архетипа, что-то вроде этого в src/main/resources/META-INF/maven/archetype-metadata.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="myarchetype">
<fileSets>
<fileSet filtered="false" encoding="UTF-8">
<directory>src/foobar</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>
Видеть эта страница для получения более подробной информации о метаданных архетипа.
Другие советы
У меня была аналогичная проблема при попытке использовать ${basedir} в архетипе-ресурсах/pom.xml, но он был заменен, когда архетип запускался для создания проекта, и поэтому указывал на неправильный каталог.
Исправить это просто.Вместо этого просто используйте \${basedir}.Это позволяет избежать знака $ и не позволяет maven заменить его при запуске архетипа.Тогда ваш сгенерированный файл pom.xml будет содержать ${basedir} вместо каталога, из которого запускался архетип.