Hinweise zur Verwendung des Maven-Publish-Plugins

-START-

1. Plug-in-Einführung
maven-publish ist ein Gradle-Plug-in, das zum Veröffentlichen der lokalen Bibliothek im Apache Maven-Warehouse verwendet wird. Zum Beispiel: Veröffentlichen Sie *.aar, *.jar und andere Bibliotheken im Warehouse. Wir können sie über Gradle oder Maven als Remote-Abhängigkeit verwenden.

2. Einführung des Plug-Ins
Fügen Sie den folgenden Code zur build.gradle-Datei des zu verwendenden Moduls hinzu.

apply plugin: 'maven-publish'

3. Verwendung von Plug-Ins
Nach der Einführung von Plug-Ins können wir einige unserer benutzerdefinierten Attribute und Aufgaben erweitern. Im Modul, das das Plug-in einführt, können wir benutzerdefinierte Vorgänge ausführen, indem wir den Veröffentlichungsknoten überschreiben.

Beim Pulishing können wir zwei Konfigurationen, Veröffentlichungen und Repositorys, überschreiben.
Informationen zur spezifischen Konfiguration finden Sie in der Einführung zur offiziellen Gradle-Website

publishing {
    //基本信息配置
    publications {
        maven(MavenPublication) {
            //配置组织结构信息(这里就是配置我们依赖时,所用到的libs结构信息 implementation 'com.xxx.androidlibs:xxx:1.0.0')
            groupId = 'com.xxx.androidlibs'
            artifactId = 'xxx'
            version = '1.0.0'

            //定义输出资源源文件位置
            artifact androidSourcesJar
            artifact("$buildDir/outputs/aar/xxx.aar")

            pom {
                //libs名称
                name = 'xxx'
                //libs官网(一般为GitHub libs 地址)
                url = 'http://www.example.com/library'
                //libs描述(功能介绍)
                description = 'xxx.'

                //开源协议
                licenses {
                    license {
                        name = 'The Apache License, Version 2.0'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                //libs发布者信息
                developers {
                    developer {
                        id = 'xxx'
                        name = 'xxx'
                        email = '[email protected]'
                    }
                }

                //libs源码仓库信息
                scm {
                    connection = 'scm:git:git://example.com/my-library.git'
                    developerConnection = 'scm:git:ssh://example.com/my-library.git'
                    url = 'http://example.com/my-library'
                }
            }
        }
    }

    //maven仓库配置
    repositories {
        mavenLocal()//本地仓库(默认)
        maven {
            //本地maven地址配置(自定义,也可以是一个maven仓库地址)
            url = uri("${rootProject.projectDir}/repo")
        }
    }
}
task androidSourcesJar(type: Jar) {
    archiveClassifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
}

4. Kompilierungsbefehl Führen Sie den Kompilierungsbefehl aus. Nach Erfolg werden libs (Implementierung 'com.xxx.androidlibs:xxx:1.0.0')
generiert, auf die wir uns verlassen können. Natürlich müssen Sie Maven in build.gradle konfigurieren im Projektstammverzeichnis Warehouse, d. h. die durch Repositorys {} konfigurierten Informationen.

./gradlew build publish

5. Dinge, die Aufmerksamkeit erfordern:
artefakt("$buildDir/outputs/aar/xxx.aar")
hat diese Zeile hier hinzugefügt und wird den build.gradle von libs unter
dependencies{ api files('libs/libddshare.jar') ablegen. ) } zur Verwendung von API Die abhängigen Bibliotheken von Drittanbietern werden in *.aar zusammengefasst.


Sechs, vollständiger Code

Hier wird das AfterEvaluate-Knotenpaket verwendet, um seine Ausführungsreihenfolge sicherzustellen, da wir die Ressourcen im BuildDir „$buildDir/outputs/aar/xxx.aar“ packen.

apply plugin: 'maven-publish'

task androidSourcesJar(type: Jar) {
    archiveClassifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives androidSourcesJar
}

afterEvaluate {
    publishing {
        //基本信息配置
        publications {
            maven(MavenPublication) {
                //配置组织结构信息(这里就是配置我们依赖时,所用到的libs结构信息 implementation 'com.xxx.androidlibs:xxx:1.0.0')
                groupId = 'com.xxx.androidlibs'
                artifactId = 'xxx'
                version = '1.0.0'

                //定义输出资源源文件位置
                artifact androidSourcesJar
                artifact("$buildDir/outputs/aar/xxx.aar")

                pom {
                    //libs名称
                    name = 'xxx'
                    //libs官网(一般为GitHub libs 地址)
                    url = 'http://www.example.com/library'
                    //libs描述(功能介绍)
                    description = 'xxx.'

                    //开源协议
                    licenses {
                        license {
                            name = 'The Apache License, Version 2.0'
                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }

                    //libs发布者信息
                    developers {
                        developer {
                            id = 'xxx'
                            name = 'xxx'
                            email = '[email protected]'
                        }
                    }

                    //libs源码仓库信息
                    scm {
                        connection = 'scm:git:git://example.com/my-library.git'
                        developerConnection = 'scm:git:ssh://example.com/my-library.git'
                        url = 'http://example.com/my-library'
                    }
                }
            }
        }

        //maven仓库配置
        repositories {
            mavenLocal()//本地仓库(默认)
            maven {
                //本地maven地址配置(自定义,也可以是一个maven仓库地址)
                url = uri("${rootProject.projectDir}/repo")
            }
        }
    }
}

-ENDE-

Supongo que te gusta

Origin blog.csdn.net/github_35033182/article/details/120064146
Recomendado
Clasificación