How can one go about setting up a local maven repo.
WARNING: the following recipe works, but probably could use improvement, as I am far from a Maven expert. I hammered out this approach last year for use with my CWAC libraries.
Step #1: Add classpath 'com.github.dcendents:android-maven-plugin:1.0'
to your buildscript
dependencies
block in your library project's build.gradle
file. Also add version
and group
statements to provide that information about your AAR.
Step #2: Use gradle install
to compile the AAR and install it in the default local Maven repository.
Step #3: Ordinarily, you would add mavenLocal()
to the dependencies
block of your application project to pick up the AAR via its artifact ID. That may be working again, though it was broken for a bit. Instead, use maven { url "${System.env.HOME}/.m2/repository" }
as a short-term workaround.
So, for example, your library project build.gradle
file might contain:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
classpath 'com.github.dcendents:android-maven-plugin:1.0'
}
}
apply plugin: 'android-library'
apply plugin: 'android-maven'
version '0.4.0'
group 'some.likely.group.name.goes.here'
repositories {
mavenCentral()
}
dependencies {
compile 'com.squareup.picasso:picasso:2.2.0'
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
// as normal
}
You would use gradle install
to publish the JAR to your local Maven repo. Your application project would then have the following stuff in its build.gradle
:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
maven { url "${System.env.HOME}/.m2/repository" } // mavenLocal()
}
dependencies {
compile 'some.likely.group.name.goes.here:name-of-library:0.4.0'
}
android {
// as normal
}
where you replace:
some.likely.group.name.goes.here
with something
0.4.0
with a version number in X.Y.Z format
name-of-library
will be the directory name that contains the Android library project (e.g., presentation
or foo
)
repositories { flatDir { dirs 'libs' } mavenCentral() }
and then including them using the usual groupId format – KatyflatDir
. I publish my AARs to a local Maven repo, and it resolves dependencies from there, with no issue. – CounterattackflatDir
and pure remote dependencies. How can one go about setting up a local maven repo. – Katy