Как подавить замену свойств при создании проекта на основе архетипа?

StackOverflow https://stackoverflow.com/questions/1878742

  •  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} вместо каталога, из которого запускался архетип.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top