Gradle:如何将Android库发布到本地存储库
我有一个库和一个使用Gradle和Android Studio的Android应用程序。我可以将库直接包含在项目中,如下所示Gradle:如何将Android库发布到本地存储库,android,android-gradle-plugin,Android,Android Gradle Plugin,我有一个库和一个使用Gradle和Android Studio的Android应用程序。我可以将库直接包含在项目中,如下所示 compile project(':library') 因为我不想与库源代码混淆,所以我想将库发布到本地存储库中,以便作为 compile 'com.mygroup:library:1.0' 有什么建议吗?在本地maven存储库上发布de库,然后在gradle上使用 repositories { mavenLocal() } 如果列出了其他存储库,请确保首先显示
compile project(':library')
因为我不想与库源代码混淆,所以我想将库发布到本地存储库中,以便作为
compile 'com.mygroup:library:1.0'
有什么建议吗?在本地maven存储库上发布de库,然后在gradle上使用
repositories {
mavenLocal()
}
如果列出了其他存储库,请确保首先显示mavenLocal
文档:关于的第51.6.4节我刚刚找到了一个解决方案。在库项目的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
有关详细信息,请阅读
settings.gradle
add中的
include 'riz.com.mylibrary'
project(':riz.com.mylibrary').projectDir = new File('C:\\Users\\Rizwan Asif\\AndroidStudioProjects\\mylibrary')
然后在依赖项的build.gradle
中添加
compile project(':riz.com.mylibrary')
对于Android库,您应该使用Android Gradle Maven插件: 然后,要发布到本地存储库,请运行:
./gradlew install
它将安装在$HOME/.m2/存储库中。然后,在应用程序或其他项目中,您可以通过将mavenLocal()
添加到存储库中来包含它
或者,如果您的库位于GitHub上,则可以使用将其包含在其他项目中。然后,您不必运行上述命令,只需使用推送的内容即可 我更喜欢将java源代码和javadoc添加到maven存储库中。下面的脚本使用将您的android库发布到maven存储库。它创建.aar、javadoc.jar、sources.jar和.pom,并在将文件上载到maven存储库后更新maven-metadata.xml。我还把脚本放在了屏幕上 称之为
./gradlew uploadArchives
我想在库中还需要
group='com.example'version='1.0'
。如果您同时开发库,这是最好的方法,但是当我尝试对同步进行分级时,我得到了一个名为'default'的错误配置。[您的本地maven路径在此]
类似于~/.m2
文件夹?存储库(url:mavenLocal().getUrl())
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