2013-05-25 2 views
26

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

Ant + Ivy

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

Maven

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

Gradle

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

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

ОТВЕТ

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

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

ответ

45

Вы можете настроить снимок и релиз хранилище в задаче «Загрузить» (например, в 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 используется. В противном случае используются выпуски repo.

+0

извините, я должен уточнить, что я использую стиль плюща хранилища. я обновлю вопрос. – dev

+0

Nexus не поддерживает репозитории стиля плюща. Лучше использовать формат репозитория Maven, поскольку он понимается всеми инструментами построения, включая Maven, Gradle, Gant, sbt, Leiningen, Ivy и др. –

+0

Я, кажется, могу опубликовать с настройками плюща для Nexus? Мне нужно опубликовать как плющ, чтобы использовать последнюю. Интеграцию. Если я переключусь на формат maven repo в Nexus, я не смогу использовать эту функцию. – dev

36

Если вы хотите использовать новый 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 and setting snapshotRepository and releaseRepository

+1

. В чем же преимущество этого решения по сравнению с использованием только плагина maven? – Janosch

Смежные вопросы