我有一个使用Gradle和Android Studio的图书馆和Android应用程序。我可以将库直接包含在项目中,如下所示
compile project(':library')
因为我不想与库源代码进行交互,所以我想将库发布到本地存储库中,以便我可以用作
compile 'com.mygroup:library:1.0'
有任何建议吗?
答案 0 :(得分:48)
我刚刚找到了解决方案。在库项目的build.gradle中,添加此
apply plugin: 'maven'
group = 'com.mygroup'
version = '1.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://[your local maven path here]")
// or repository(url: mavenLocal().getUrl())
}
}
}
在项目文件夹中,键入以下命令
gradle uploadArchives
阅读Publishing artifacts了解更多信息
答案 1 :(得分:26)
对于Android库,您应该使用Android Gradle-Maven插件https://github.com/dcendents/android-maven-gradle-plugin:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
}
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
然后发布到本地存储库运行:
./gradlew install
将它安装在$ HOME / .m2 / repository中。在您的应用或其他项目中,您可以通过将mavenLocal()
添加到您的存储库来包含它。
或者,如果您的库位于GitHub上,那么您只需使用JitPack将其包含在其他项目中即可。然后你不必运行上面的命令,只能使用被推的东西。
答案 2 :(得分:5)
在您当地的maven存储库上发布de library,然后在您的gradle上使用
repositories {
mavenLocal()
}
如果您列出了其他存储库,请确保首先显示您的mavenLocal。
文件:关于https://gradle.org/docs/current/userguide/dependency_management.html
的第51.6.4节答案 3 :(得分:5)
我更喜欢将java源代码和javadoc添加到maven资源库。以下脚本使用android maven plugin将您的android库发布到maven存储库。它创建.aar,javadoc.jar,sources.jar和.pom,并在将文件上载到maven存储库后更新maven-metadata.xml。我还将脚本放在GitHub上。
apply plugin: 'com.android.library'
apply plugin: 'maven'
//Your android configuration
android {
//...
}
//maven repository info
group = 'com.example'
version = '1.0.0'
ext {
//Specify your maven repository url here
repositoryUrl = 'ftp://your.maven.repository.com/maven2'
//Or you can use 'file:\\\\C:\\Temp' or 'maven-temp' for a local maven repository
}
//Upload android library to maven with javadoc and android sources
configurations {
deployerJars
}
//If you want to deploy to an ftp server
dependencies {
deployerJars "org.apache.maven.wagon:wagon-ftp:2.2"
}
// custom tasks for creating source/javadoc jars
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
destinationDir = file("../javadoc/")
failOnError false
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
//Creating sources with comments
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
//Put the androidSources and javadoc to the artifacts
artifacts {
archives androidSourcesJar
archives javadocJar
}
uploadArchives {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
repository(url: repositoryUrl) {
//if your repository needs authentication
authentication(userName: "username", password: "password")
}
}
}
}
用
调用它./gradlew uploadArchives
答案 4 :(得分:0)
在settings.gradle
添加
include 'riz.com.mylibrary'
project(':riz.com.mylibrary').projectDir = new File('C:\\Users\\Rizwan Asif\\AndroidStudioProjects\\mylibrary')
然后在依赖项中的build.gradle
添加
compile project(':riz.com.mylibrary')