Мы мигрируем из Муравья в Градл.Вначале Gradle выглядел многообещающе, когда я начал миграцию целей с Ant на Gradle, столкнувшись с похожими проблемами, ранее с Ant.
Поток Ant Build выглядит так -
У нас есть приложение Java- Ant используется для очистки, компиляции и сборки jar проекта.
Далее у нас есть несколько целей для копирования встроенного файла jar и некоторых других ресурсов на сервер Windows. Это всего лишь сервер Windows, а не связующее звено, как repo.
Эти цели копирования основаны на выпуске (внутренне используя macrodefs) - если альфа, он должен копировать в другую папку, а для стабильного выпуска - в другую папку.
Другой макроопределением было просто создать резервную копию существующих файлов на сервере, а затем скопировать туда новые файлы.
Миграция в Gradle - мне понравилось, как Gradle выполняет задачиочистить, собрать и собрать.Для этого я использую плагин Java.
В следующих задачах у меня возникают проблемы с копированием файлов на сервер Windows и сохранением старых файлов перед копированием новых файлов.
В Gradle я создал несколько пользовательскихтакие задачи, как copyJarAlpha, copyJarStable, backupJarAlpha, backupJarStable и т. д.
Внутренне они делают то же самое, просто копируя файлы из источника в место назначения и некоторые операторы печати.Но это выглядит повторяющимся.Я искал такие способы, как macrodef в муравье.
task deployAlpha {
doFirst {
isJenkinsAvailable(deployDirAlpha)
}
doFirst {
if(isDeployLibsTaskRequired(outputDir,deployDirAlpha)) {
tasks.findByName('deployLibsAlpha').execute()
}
}
doLast {
println "Deploying corejar jar to : ${deployDirAlpha}"
copy {
from "${outputDir}/${corejar}"
into "${deployDirAlpha}"
}
println "Deploying evan-core jar to : ${deployDirAlpha}/lib"
copy {
from "${externalLibsDir}/core2.jar"
into "${deployDirAlpha}/lib"
}
println "Deploying test resource files to : ${deployDirAlpha}"
copy {
from "./test-resources/logback-test.xml", "./test-resources/JUnit-TestSuiteResults.xsl"
into "${deployDirAlpha}"
}
}
}
У меня есть похожие фрагменты в нескольких местах.Это не выглядит красиво.
Есть ли способ, которым мы можем повторно использовать методы / функции в Gradle?или я допускаю неправильные вещи здесь .. или я пытаюсь использовать gradle для вещей, для которых он не предназначен?Как лучше всего выполнить эти задачи по копированию и резервному копированию файлов, если не использовать пользовательские задачи в Gradle?