SBT: Как опубликовать на Sonatype и агрегатный проект, и все модули?

У меня есть проект SBT, который я без проблем публиковал в Sonatype, и я преобразовал его в многомодульный проект SBT. Теперь я хочу:

  • опубликуйте файл jar / javadoc / sources / pom, содержащий все агрегированные подмодули, в Sonatype (это означает, что они должны быть подписаны с помощью плагина sbt-pgp)

  • публиковать каждый отдельный подмодуль в Sonatype

Я попытался использовать для этого плагин сборки sbt, но не смог далеко продвинуться. У вас есть образец файла Build.scala, который показывает, какая структура лучше всего подходит для этого?


person Eric    schedule 28.10.2013    source источник
comment
Доступен ли этот проект на github, если я хочу проверить свою теорию?   -  person Eugene Yokota    schedule 28.10.2013
comment
Вы имеете в виду, как мы делаем в лифте? У нас есть сводный проект фреймворка, который я публикую и все отправляю, и вы также можете перейти к отдельным подпроектам.   -  person fmpwizard    schedule 28.10.2013
comment
@EugeneYokota: да, это для specs2: github.com/etorreborre/specs2/tree/specs2 -модули. Но я не хочу давать вам работу, которую должен делать сам.   -  person Eric    schedule 28.10.2013
comment
@fmpwizard да, если вы также публикуете подпроекты. Я посмотрю на конфигурацию лифта, спасибо.   -  person Eric    schedule 28.10.2013
comment
Тогда да, на самом деле фреймворка нет, это всего лишь совокупность. А затем подпроекты, такие как lift-json, lift-util, попадают в sonatype со своими собственными документами, исходным кодом и т. Д.   -  person fmpwizard    schedule 28.10.2013
comment
@Eric Это было не так уж и много, к тому же я в любом случае должен specs2 человеко-месяца. Мета-вопрос - почему вам нужно публиковать совокупную банку, а не разбивать ее на части?   -  person Eugene Yokota    schedule 28.10.2013
comment
Я хочу облегчить переход для людей с большой зависимостью. Когда они будут готовы, их можно будет заменить банками меньшего размера.   -  person Eric    schedule 28.10.2013


Ответы (2)


Я не знаю, возможно ли это с доступными в настоящее время плагинами, но используя ScopeFilter, вы можете создать искусственный проект, который объединяет все источники, оттуда просто нужно вызвать publishSigned.

Посмотрите, как я объединяю исходный код в sbt-unidoc.

Вот доказательство правильности концепции: https://github.com/eed3si9n/commit649e21 / github.com/eed3si9n/s09c06e06e06e6e06e6e06e06e6f6f6f6d6f6f6f6f6f6f6f6 а>

После внесения изменений я смог запустить package, doc и т. Д. Возможно, вам придется агрегировать *.class, если вы используете макросы.

person Eugene Yokota    schedule 28.10.2013
comment
Большое спасибо за ваш запрос на перенос, это именно то, что я искал. - person Eric; 28.10.2013

Я использую плагин сборки sbt для Casbah - https://github.com/mongodb/casbah

У Casbah есть агрегированный проект верхнего уровня, но я также упаковываю одну банку всех зависимостей, добавляя дополнительный артефакт в сборку:

addArtifact(Artifact("casbah-alldep", "pom", "jar"), assembly),

Дополнительную информацию см. В файле сборки: https://github.com/mongodb/casbah/blob/master/project/CasbahBuild.scala

person Ross    schedule 28.10.2013