Как мне заставить Lazybones создавать многомодульные проекты Java EE 7 Gradle?

Это мой репозиторий в github: https://github.com/joedayz/lazybones-templates/

Я использовал processTemplates в соответствии с документацией

processTemplates 'build.gradle', props
processTemplates 'gradle.properties', props
processTemplates 'src/main/java/*.java', props
processTemplates 'settings.gradle', props

Я запрашиваю у пользователя эту информацию:

    props.project_megaproceso = ask("Define value for 'megaproceso'  [megaproceso]: ", "megaproceso", "megaproceso")
    props.project_macroproceso = ask("Define value for 'macroproceso' [macroproceso]: ", "macroproceso", "macroproceso")
    props.project_proceso = ask("Define value for 'proceso' [proceso]: ", "proceso", "proceso")

megaproceso2, macroproceso, процес, являются каталогами или частью имен файлов в моем шаблоне.

Как я могу изменить имена распакованных каталогов и файлов? Код в моем github.

1 ответ

Решение

Скрипты после установки для Lazybones в настоящее время имеют полный доступ как к стандартным классам JDK, так и к библиотеке ввода-вывода Apache Commons, специально для помощи в манипулировании файлами.

В этом конкретном случае вы можете использовать File.renameTo() или же FileUtils.moveFile/Directory(), Например:

def prevPath = new File(projectDir, "megaproceso2-macroproceso-proceso.ear")
prevPath.renameTo(new File(
    projectDir,
    "${props.megaproceso}-${props.macroproceso}-${props.processo}.ear"))

projectDir Переменная - это одно из нескольких свойств, введенных в скрипт после установки. Вы можете найти их список в Руководстве для разработчиков шаблонов.

Я думаю, что главное преимущество FileUtils.moveFile() в том, что он работает, даже если вы перемещаете файлы между устройствами, но здесь это не обязательно. Также обратите внимание, что вам нужно явно импортировать классы из Commons IO, если вы хотите их использовать.

Другие вопросы по тегам