Загрузка артефактов из нескольких конфигураций в Maven в Gradle - PullRequest
4 голосов
/ 31 марта 2012

Я не могу опубликовать второй набор jar-файлов в локальном репозитории Maven, используя отдельную задачу загрузки, отличную от uploadArchives. Вот мои настройки:

uploadArchives {
  repositories {
    mavenDeployer {
      repository(url: project.releaseRepoUrl)
      snapshotRepository(url: project.snapshotRepoUrl)
    }
  }
}

task sourcesJar(type: Jar){ ... }

artifacts{
  archives sourcesJar
}

Выше работает как ожидалось. Тогда у меня есть дополнительные configuration

configurations{
  guiceArchives
}

task guiceJar(type: Jar){ ... }

task guiceSourcesJar(type: Jar){ ... }

artifacts{
  guiceArchives guiceJar
  guiceArchives guiceSourcesJar
  //archives guiceJar
  //archives guiceSourcesJar
}

Выполнение gradle uploadArchives работает нормально, но gradle uploadGuiceArchives ничего не делает:

:core:guiceClasses UP-TO-DATE
:core:guiceJar UP-TO-DATE
:core:guiceSourcesJar UP-TO-DATE
:core:jar UP-TO-DATE
:core:sourcesJar UP-TO-DATE
:core:uploadArchives

BUILD FINISHED

Отдельные guiceJar и guiceSourcesJar отлично работают сами по себе, и распечатка содержимого конфигурации guiceArchives также показывает, что банки правильно включены в качестве артефактов.

Я попытался временно назначить guiceJar и guiceSourcesJar для конфигурации archives, что заставляет его жаловаться, говоря:

A POM cannot have multiple artifacts with the same type and classifier.

Это именно то, что написано в руководстве . Поэтому я предположил, что причиной столкновения было именно это столкновение артефактов.

Так что я исправил это, используя addFilter, как предлагает руководство, которое работало замечательно, но только когда guiceJar и guiceSourcesJar присвоены archives. Когда я назначаю их обратно guiceArchives и пытаюсь gradle uploadGuiceArchives, это все равно ничего не делает.

Нет ли способа загрузить несколько артефактов с разными задачами загрузки?

Решение:

Вот обновление с решением, предоставленным @Peter Niederwieser.

Просто добавьте это:

uploadGuiceArchives {
  repositories {
    mavenDeployer {
      repository(url: project.releaseRepoUrl)
      snapshotRepository(url: project.snapshotRepoUrl)
    }
  }
}

Примечание: addFilter не требуется.

Спасибо!

Edit2:

Для полноты project.releaseRepoUrl и project.snapshotRepoUrl устанавливаются в локальный репозиторий maven следующим образом:

project.ext{
  releaseRepoUrl = "file://${project(':').projectDir}/../mvn-repo/releases"
  snapshotRepoUrl = "file://${project(':').projectDir}/../mvn-repo/snapshots"
}

1 Ответ

2 голосов
/ 31 марта 2012

Может быть, вы не определили репозитории для uploadGuiceArchives, как вы сделали для uploadArchives?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...