Пытаюсь создать архетип, который будет условно включать файл на основе пользовательского ввода.
Например, если пользователь будет использовать этот собственный архетип и передавать такие параметры, как
-DprojectType = webProject или -DprojectType = webDBProject
если webProject копирует только файлы, связанные с webProject, и если его webDBProject копирует файлы, связанные с webProject и файлами, связанными с БД.
Я обнаружил, что условно включить/исключить файл невозможно, по крайней мере, в ближайшем будущем, используя дескриптор архетипа.
Как я могу условно включить или исключить файл из архетипа при создании проекта?
Другой вариант, который у меня был, состоял в том, чтобы выполнить цель после генерации архетипа и включить/удалить ненужные файлы. Но мы не можем использовать плагин eclipse M2E с этим.
Последний вариант, который я пробовал, - это использовать сам шаблон скорости для выполнения операций постобработки.
Поскольку мы не можем создать экземпляр объекта внутри шаблона скорости, я пытался использовать отражение для создания экземпляра файла и удаления некоторого файла, как показано ниже:
$somestring.getClass().forName("java.io.File").getMethod("delete", null).invoke($somestring.getClass().forName("java.io.File").getConstructor($somestring.getClass()).newInstance("delete.txt"), null)
запись вышеупомянутой строки в файл шаблона скорости и запуск на изолированной java-программе скорости работает нормально. Но то же самое не работает при выполнении в составе генератора архетипов Maven.
Я пытался идти шаг за шагом, где выполнение было успешным до получения класса, но часть getConstructor() не выполняется при запуске archetype: generate.
Кто-нибудь пытался узнать причину или нашел альтернативное решение?
Также кто-нибудь знает, какая версия скоростного двигателя используется в Maven?