2016-04-29 5 views
1

Мой проект зависит от кучи файлов jar, которые не находятся в репозитории Maven. Я могу объявить их как зависимые от файлов, но я бы предпочел использовать менеджер зависимостей Gradle, поэтому мне нужно установить их в локальный репозиторий Maven.Gradle: установите кучу банок в локальный репозиторий Maven

Я думаю о написании задания, скажем, «installFiles», и от этого зависит выполнение «compileJava», поэтому он будет запущен первым, и эти зависимости появятся в локальном репозитории Maven перед компиляцией. Тогда я собираюсь объявить их как нормальные внешние зависимости модулей, так что менеджер зависимостей Gradle может справиться с ними.

Вопрос в том, как установить кучу банок в локальный репозиторий Maven? Вся документация, которую я нашел, просто говорит об установке результата текущего проекта, а не о каких-либо произвольных баночках.

ответ

1

Просто следуйте Gradle Documentation

здесь цитату для удобства:

apply plugin: "maven-publish" 

publishing { 
    publications { 
    maven(MavenPublication) { 
     artifact 'my-file-name.jar' // Publish a file created outside of the build 
    } 
    } 
} 
+0

ОП не спрашивает о публикации артефактов, полученных из проекта. – RaGe

+0

На вопрос OPs отвечает точный связанный параграф – Vampire

+0

Прошу прощения. Ты прав. – RaGe

0

Где вы получаете эти произвольные банки? Где вы можете получить информацию о POM, такую ​​как moduleId, groupID, версия и т. Д.?

Возможно, вы сможете создать задачу градиента для построения POM, а затем опубликовать в maven repo, но я думаю, что более простым решением является просто использовать maven для первоначальной публикации. Вы можете просто запустить эту команду Maven

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file \ 
    -Dfile=path-to-your-artifact-jar \ 
    -DgroupId=your.groupId \ 
    -DartifactId=your-artifactId \ 
    -Dversion=version \ 
    -Dpackaging=jar \ 
    -DlocalRepositoryPath=path-to-specific-local-repo 

Если пропустить последний параметр, артефакт будет опубликован по умолчанию локального репозитория, объявленный в Maven settings.xml

Reference

Пар вещей, которые вы должны подумайте об этом:

  1. Ваша сборка действительна только на вашем местном компьютере. Поскольку банки, которые вы нажимаете на свое местное репо, уникальны для вашей сборки, ваш проект больше не переносится.

  2. Если у ваших банок есть собственные зависимости, ответ выше не генерирует эту информацию в POM, вам либо нужно добавить его в себя, либо управлять транзитивными зависимостями вручную в нисходящих проектах.