Создание Maven ArcheType. Настройка имени файла

Я хочу создать Archetype, в котором пользователь может предоставить artifactId. Затем я хочу взять этот artifactId и создать два файла. Вот пример.

artifactId= box

FILE 1: copy-box.txt
FILE 2 : Box.java

Создание copy-box.txt довольно просто. Но как создать Box.java с капиталом B.

Ответ 1

Я просмотрел код, который создает замену в именах файлов архетипа. (здесь можно найти здесь). Мне кажется, что значения аргументов берутся из контекста, а это значит, что они не оцениваются. На мой взгляд, на данный момент невозможно (печально, но верно) использовать механизм оценки непосредственно в именах файлов.

Однако, просто реализуя интерфейс FilesetArchetypeGenerator, можно внести хороший вклад в генерацию архетипов.

Ответ 2

В maven-архетипе есть ошибка. См. Отчеты об ошибках ARCHETYPE-406 и ARCHETYPE-397. При исправлении можно будет определить и использовать пользовательский requiredProperty для вашего дела. В файле archetype-metadata.xml добавьте

<requiredProperties>
  <requiredProperty key="classPrefix" >
    <defaultValue>
      ${artifactId.substring(0,1).toUpperCase()}${artifactId.substring(1)}
    </defaultValue>
  </requiredProperty>
</requiredProperties>

Не забудьте добавить classPrefix в archetype.properties