Gradle: 如何将 Android 库发布到本地存储库
Gradle: How to publish a Android library to local repository
我有一个图书馆和一个使用 Gradle 和 Android Studio 的 Android 应用程序。我可以直接将库包含在项目中,如下所示
compile project(':library')
因为我不想与库源代码混在一起,所以我想将库发布到本地存储库中,以便我可以使用
compile 'com.mygroup:library:1.0'
有什么建议吗?
在您的本地 Maven 存储库上发布库,然后在您的 gradle 上使用
repositories {
mavenLocal()
}
如果您列出了其他存储库,请确保您的 mavenLocal 出现在第一位。
文档:关于 https://gradle.org/docs/current/userguide/dependency_management.html
的第 51.6.4 节
我刚刚找到了解决方案。在library项目的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了解更多信息
在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')
对于 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 将它简单地包含在其他项目中。那么你就不必 运行 上面的命令,可以直接使用推送的内容。
我更喜欢将 java 源和 javadoc 添加到 maven 存储库。以下脚本使用 android maven plugin. It creates the .aar, javadoc.jar, sources.jar and .pom and updates the maven-metadata.xml after uploading the files to the maven repository. I also put the script on GitHub.
将您的 android 库发布到 Maven 存储库
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
我有一个图书馆和一个使用 Gradle 和 Android Studio 的 Android 应用程序。我可以直接将库包含在项目中,如下所示
compile project(':library')
因为我不想与库源代码混在一起,所以我想将库发布到本地存储库中,以便我可以使用
compile 'com.mygroup:library:1.0'
有什么建议吗?
在您的本地 Maven 存储库上发布库,然后在您的 gradle 上使用
repositories {
mavenLocal()
}
如果您列出了其他存储库,请确保您的 mavenLocal 出现在第一位。
文档:关于 https://gradle.org/docs/current/userguide/dependency_management.html
的第 51.6.4 节我刚刚找到了解决方案。在library项目的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了解更多信息
在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')
对于 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 将它简单地包含在其他项目中。那么你就不必 运行 上面的命令,可以直接使用推送的内容。
我更喜欢将 java 源和 javadoc 添加到 maven 存储库。以下脚本使用 android maven plugin. It creates the .aar, javadoc.jar, sources.jar and .pom and updates the maven-metadata.xml after uploading the files to the maven repository. I also put the script on GitHub.
将您的 android 库发布到 Maven 存储库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