Есть ли способ, чтобы сделать следующую версию при публикации в репозитории в Gradle?
Например, если у меня в версии 3.0.1 в моем репозитории я хочу опубликовать версию 3.0.2
.
плющ
имеет задачей для "муравей" по имени номер_сборки
, который делает именно это:
<project xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<target name="ivyBuildNumber" description="Use ivy get the next build number">
<ivy:buildnumber
resolver="url-chain"
organisation="${ivy.organisation}"
module="${ivy.module}"
revision="${version.base}"/>
<echoproperties prefix="ivy.new."/>
</target>
</проект>
Есть ли способ сделать это в Gradle в? если не как я могу получить доступ к
задачи плющ из Gradle в'АНТ ы``?
В мои построения.Gradle в` Я звоню в "муравей"
ant.importBuild 'build.xml'
Я Дон'т думаю, что есть поддержка в Gradle, но вы можете попробовать использовать Ant-задачу. https://docs.gradle.org/current/userguide/ant.html#sec:import_ant_build
Еще один способ сделать это-использовать какой-то плагин, или подгонянный задач по управлению версию.
Да, вы можете получить доступ к задач плющ из Ant-скрипт импорта муравей'файл build.xml ы для Gradle's сборки.файл Gradle. Ниже приведен синтаксис для этого.
АНТ.importBuild 'построить.в XML'
Пожалуйста, обратитесь : https://docs.gradle.org/current/userguide/ant.html#sec:import_ant_build
Я рекомендую вам использовать плагин выпустить к Douban https://github.com/researchgate/gradle-release Он имеет довольно документацию. Легко читается. Кроме того, проверьте, как я использовал его в мой личный проект. https://github.com/vatolinrp/bitcoin-esb/blob/master/build.gradle Это был бы хороший пример для вас.
После долгой работы, мне удалось это сделать.
В моем сборки.Gradle в я добавил следующий код
ant.importBuild 'build.xml'
task getNextBuild(dependsOn : ivyBuildNumber) {
doLast{
def nextVersion = ant.properties['ivy.new.revision']
println nextVersion
}
}
Я импортировал мой "муравей" создать файл, и создал задачу, которая называет плющ
номер_сборки
задачи.
Есть мой build.xml
<project xmlns:ivy="antlib:org.apache.ivy.ant">
<target name="ivyBuildNumber">
<path id="ivy.classpath" path="lib/ivy.jar" />
<typedef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.classpath" />
<ivy:buildnumber
organisation="daniel"
module="hello"/>
<echoproperties prefix="ivy.new."/>
</target>
</project>
Потому что моей среде IDE (Intellij), разве'т у ivy.jar к содержанию,
Я импортировал ivy.jar из моего корневого каталога (
lib/ivy.jar`)
номер_сборки
может быть вызван с помощью Gradle в чистом без импорта сборки Ant:в
configurations {
antTasks // define a new configuration
}
repositories {
mavenCentral()
}
dependencies {
antTasks("org.apache.ivy:ivy:2.4.0") // add Ivy library to it
}
ext {
// define the Ivy task, using the extra configuration as classpath extension
ant.taskdef(name: "ivyBuildNumber",
classname: "org.apache.ivy.ant.IvyBuildNumber",
classpath: configurations.antTasks.asPath)
ant.ivyBuildNumber(organisation: "daniel", module: "hello")
nextVersion = ant.properties["ivy.new.revision"]
}
task demo {
doLast {
println nextVersion
}
}
Вообще, Gradle в не'Т есть какие-либо эквивалента в комплекте в Maven-релиз плагина, поэтому приходится полагаться на Плагины. Один сплошной плагин Gradle в-релиз по К Douban, другой Аксиона на Аллегро технологий. Бывший классический Мэйвен-стиль управления версиями, последний забирает себе СКМ в качестве единственного источника истины, устраняя версий в архиве. Но ни один из этих плагинов не предоставляют точной поведение.
Мое личное мнение на проблемы с версиями изначально использовать некоторые плагины. Так как я использовал бамбук в качестве CI-сервера на работе, буквально все, что я делал с плагинами релиз использованием Gradle разбился на CI сервер рано или поздно. Это могло бы сработать за несколько недель, но каждое обновление сервера принес некоторые проблемы. Я закончил с использованием СКМ-менее подход с простым конвенции: использовать наименование филиала в качестве базовой версии, соединить его с номером сборки (оба значения CI сервером):
в
ext {
branch = System.getProperty("branch", "develop")
buildNumber = System.getProperty("buildNumber", "latest")
isRelease = System.getProperty("isRelease", "false").toBoolean()
artifactVersion = "${branch}${(isRelease ? ".$buildNumber" : "-SNAPSHOT")}"
}
CI-сервер может быть создана для выполнения следующую команду
./gradlew -DisRelease=true -Dbranch=${git.branch} -DbuildNumber=${build.number} mavenPublish
в когда 'освобождение' нажата кнопка. Например, построить 12 филиала 3.0 будет выпускать версии 3.0.12 в бинарном репозитории.
Преимущества:<БР/>
Минусы:<БР/> - дополнительные задачи сценария являются обязательными для тегов <БР/> - какой номер сборки будет пропущен, очевидно, (например, следующая версия после 3.5.76 может быть 3.5.84)