Ответ 1
sdk/build.gradle
:
apply plugin: "maven"
group = "foo"
version = "1.0"
example/build.gradle
:
repositories {
mavenLocal()
}
dependencies {
compile "foo:sdk:1.0"
}
$sdk> gradle install
$example> gradle build
У меня есть 2 разных проекта на mvn. Я пытаюсь заменить на Gradle.
проект 1 представляет собой SDK, а проект 2 использует sdk (пример)
Во время maven он создает артефакт, используя mvn install, который добавляет весь проект в локальный репозиторий.
Мне нравится работать в gradle. Мне нравится, что проект 1 build.gradle должен размещать его как локальный репозиторий gradle, а затем примерный проект должен его использовать.
В maven мы делаем mvn install, который добавляет артефакт проекта в .m2 папку, но как это сделать в gradle, так что я могу добавить артефакт проекта в локальный репозиторий.
Как я могу это сделать?
sdk/build.gradle
:
apply plugin: "maven"
group = "foo"
version = "1.0"
example/build.gradle
:
repositories {
mavenLocal()
}
dependencies {
compile "foo:sdk:1.0"
}
$sdk> gradle install
$example> gradle build
Вы можете искать:
gradle publishToMavenLocal
Доступно с:
apply plugin: 'maven-publish'
Смотрите: https://docs.gradle.org/current/userguide/publishing_maven.html
Ознакомьтесь с Gradle документацией по многопроектным сборкам.
Вот пример, с некоторыми дополнительными зависимостями. Просто позвоните gradle install
в корневую папку, и все будет построено и помещено в ваше местное репо.
Структура папки:
root
+--> build.gradle
+--> settings.gradle
+--> sdk
| +--> build.gradle
+--> example
+--> build.gradle
корень/build.gradle:
allprojects {
apply plugin: 'java'
apply plugin: 'maven'
group = 'myGroup'
version = '0.1-SNAPSHOT'
}
корень/settings.gradle:
include 'sdk'
include 'example'
корень/SDK/build.gradle:
dependencies {
// just an example external dep.
compile group:'commons-lang', name:'commons-lang', version:'2.3'
}
корень/пример/build.gradle:
dependencies {
compile project(':sdk')
compile group:'log4j', name:'log4j', version:'1.2.16'
}
Вам нужно опубликовать свою собственную библиотеку в вашем локальном хранилище. Вы можете сделать это следующим образом:
Добавьте плагин maven-publish
:
plugins {
// your other plugins come here...
id 'maven-publish'
}
Добавьте раздел публикации в свой файл сборки:
publishing {
publications {
myCoolLibrary(MavenPublication) {
from components.java
}
}
}
Запустите gradle build publishToMavenLocal
Более подробную информацию вы найдете в документации.