Подтвердить что ты не робот

Опубликовать снимок против публикации публикации в Gradle с непрерывной интеграцией

Я просто изучаю Gradle, исходя из обоих флагов Ant + Ivy и Maven, и я пытаюсь обернуть голову подходящим способом публикации версии моего программного обеспечения с помощью gradle. Мне также необходимо постоянно интегрировать мои проекты, не постоянно выпуская независимые артефакты.

Ant + Ivy

В мире Ant + Ivy я могу создавать объекты publishSnapshot и publishRelease. Они могут использовать разные распознаватели Ivy для разрешения и публикации в моем отдельном снимке или релизе репозиториев в Nexus.

Maven

С Maven я могу определить snapshotRepository или repository в моем разделе distributionManagement, чтобы maven публиковал мой отдельный снимок или релиз репозиториев в Nexus.

Gradle

Теперь введите gradle. Как я могу достичь такой же функциональности? Я использую репозитории стиля плюща.

Спасибо за любые идеи, которые вы можете предоставить.

ANSWER

Спасибо René ниже, я наконец смог создать работоспособное решение. Суть дела состояла в том, что мне нужно было постоянно интегрироваться во все мои проекты. Для этого я подумал, что объявление зависимости, использующей номер версии latest.integration, было единственным способом получить последнюю версию моих библиотек, и поэтому мне нужно было использовать репозитории стиля плюща.

На самом деле есть другие способы использовать последнюю версию библиотек для непрерывной интеграции моего программного обеспечения во все проекты. Решение состоит в том, чтобы использовать uploadArchives точно так же, как указано в списке René (также обратите внимание, что вам нужно будет apply plugin: 'maven'), чтобы это работало. Убедитесь, что ваши репозитории также являются maven-стилем, а при объявлении зависимости вы можете использовать динамическую версию цифры, как показано здесь. В моем случае я перечислил глобальный номер версии в моем общем .gradle и в нисходящих проектах, я использовал version: version для ссылки на глобальную переменную версии Таким образом, каждый артефакт в моей системе имеет одну и ту же версию. Когда придет время для выпуска, я могу изменить это значение с 1.0-SNAPSHOT на 1.0 и построить каждый по порядку.

4b9b3361

Ответ 1

Вы можете настроить моментальный снимок и репозиторий выпуска в задаче "Загрузить" (например, uploadArchives):

uploadArchives {  
    repositories {  
        mavenDeployer {  
            repository(url: 'http://myCompanyRepo.com:8081/releases') {  
                authentication(userName: 'admin', password: 'password');  
            }  
            snapshotRepository(url: 'http://myCompanyRepo.com:8081/snapshots') {
                authentication(userName: 'admin', password: 'password');  
            }  
        }  
    }  
}

Для *-SNAPSHOT версий используется snapshotRepository. В противном случае используется репозиторий релизов.

Ответ 2

Если вы хотите использовать новый плагин maven-publish, вы можете загрузить его в разные хранилища с помощью инструкции if:

apply plugin: 'maven-publish'

...

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        maven {
            credentials {
                username "anonymous"
            }

            if(project.version.endsWith('-SNAPSHOT')) {
                url "http://example/artifactory/libs-snapshot-local"
            } else {
                url "http://example/artifactory/libs-release-local"
            }
        }
    }
}

Ссылка: maven-publish и установка snapshotRepository и releaseRepository