I want to use master version of my lib from mavencentral.
Is it possible to declare git repository as dependency in android gradle?
I want to use master version of my lib from mavencentral.
Is it possible to declare git repository as dependency in android gradle?
For me the best way is:
Step 1. Add the JitPack repository to build.gradle at the end of repositories:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Step 2. Add the dependency in the form
dependencies {
implementation 'com.github.User:Repo:Tag'
}
It is possible to build the latest commit on the master branch, for example :
dependencies {
implementation 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
There is now a new feature in gradle that lets you add source dependencies from git.
You first need to define the repo in the settings.gradle
file and map it to a module identifier:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
You will need to use URI("https://github.com/gradle/native-samples-cpp-library.git")
instead of "https://github.com/gradle/native-samples-cpp-library.git"
if you're using Kotlin gradle.
And now in your build.gradle
you can point to a specific tag (e.g.: 'v1.0'):
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
Or to a specific branch:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
Caveats:
References:
Or you can register a repository as a submodule like this:
git submodule add my_sub_project_git_url my-sub-project
Then include the project in your settings.gradle
file, which for example should be like:
include ':my-app', ':my-sub-project'
Note that above both
my-app
andmy-sub-project
are folder names, and said folders need to contain abuild.gradle
file.
Child-folders are supported with ":
" (instead of/
), like:include ':my-app' include ':my-folder:my-sub-project'
Finally, compile
the project as a dependency in your application's build.gradle
file, like:
buildscript {
// ... Not here ...
}
// ...
dependencies {
api project(':my-sub-project')
// Or for older Gradle versions:
// ```
// compile project(':my-sub-project')
// ```
}
But if you are foldering:
api project(':my-folder:my-sub-project')
Also, when cloning your project, you will only have to add the option --recursive
to make git automatically clone the root repository, and all its submodules.
git clone --recursive my_sub_project_git_url
I hope it helps.
I don't think Gradle supports to add a git repository as a dependency. My workaround is to:
I assume that you want the library repo outside the folder of the main project repo, so each project will be independent git repos, and you can make commits to the library and main project git repositories independently.
Assuming you want to have the folder of the library project in the same folder that the folder of the main project,
You could:
In the top-level settings.gradle, declare the library repository as a project, given it's location in the filesystem
// Reference: https://looksok.wordpress.com/2014/07/12/compile-gradle-project-with-another-project-as-a-dependency/
include ':lib_project'
project( ':lib_project' ).projectDir = new File(settingsDir, '../library' )
Use the gradle-git plugin to clone the library from the git repository
import org.ajoberstar.gradle.git.tasks.*
buildscript {
repositories { mavenCentral() }
dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
}
task cloneLibraryGitRepo(type: GitClone) {
def destination = file("../library")
uri = "https://github.com/blabla/library.git"
destinationPath = destination
bare = false
enabled = !destination.exists() //to clone only once
}
In the dependencies of your project, say that the code of your project depends on the folder of the git project
dependencies {
compile project(':lib_project')
}
The closest thing I have found is https://github.com/bat-cha/gradle-plugin-git-dependencies but I can't get it to work with the android plugin, keeps trying to pull from maven even after the git repos are loaded.
@Mister Smith's answer almost worked for me, the only difference was that instead of passing the repository URI as a String
it needed to be a URI
, i.e.:
sourceControl {
gitRepository(new URI("https://github.com/gradle/native-samples-cpp-library.git")) {
producesModule("org.gradle.cpp-samples:utilities")
}
}
I'm using Gradle 6.8.