I have 2 different project build on mvn. I am trying to replace to Gradle.
Project 1 is an SDK, and project 2 is using that sdk (example).
In the time of maven it creates artifact using mvn install which adds the whole project into local repository.
I like to work in gradle like that. I like project 1 build.gradle need to post it as a gradle local repository and then example project need to use it.
In maven we do mvn install which adds a project artifact into .m2 folder but how to do in gradle so what i can add a project artefact's into the local repository.
Any way that I can do so?
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
You may be looking for:
gradle publishToMavenLocal
Available with:
apply plugin: 'maven-publish'
See: Maven Publish Plugin
gradle -Dmaven.repo.local=.m2/repository publishToMavenLocal
gradle install
with the maven
plugin?
maven
plugin has been removed in Gradle 7
Check out Gradle's documentation on multi-project builds.
Here's an example, with some extra dependencies. Just call gradle install
in the root folder, and all will be built and put to your local repo.
Folder structure:
root
+--> build.gradle
+--> settings.gradle
+--> sdk
| +--> build.gradle
+--> example
+--> build.gradle
root/build.gradle:
allprojects {
apply plugin: 'java'
apply plugin: 'maven'
group = 'myGroup'
version = '0.1-SNAPSHOT'
}
root/settings.gradle:
include 'sdk'
include 'example'
root/sdk/build.gradle:
dependencies {
// just an example external dep.
compile group:'commons-lang', name:'commons-lang', version:'2.3'
}
root/example/build.gradle:
dependencies {
compile project(':sdk')
compile group:'log4j', name:'log4j', version:'1.2.16'
}
You need to publish your own library to your local repository. You can do that in the following way:
Add maven-publish plugin: plugins { // your other plugins come here... id 'maven-publish' } Add the publishing section to your build file: publishing { publications { myCoolLibrary(MavenPublication) { from components.java } } } Run gradle build publishToMavenLocal Find more details in the documentation.
Success story sharing
gradle install
publishes into the local Maven repo, andmavenLocal()
makes sure to look there for dependencies.gradle publish
will it not also go through aninstall
phase?apply plugin: "maven"
makes available the "install" task for Gradle, right? - in some way - it is how a "transitive" (if the term fits well here) task from Maven to Gradle, right?. Consider to update your answer. Thank Youmaven
plugin has been removed. Instead you need to use themaven-publish
plugin and then usegradle publishToMavenLocal
.