是否可以使用 maven-plugin 将多个 android 库发布到 github 上的同一个包中?然后一起或单独导入库

Is it possible to publish multiple android libraries to the same package on github using the maven-plugin? then import the libraries together or alone

提问人:Matthew Dickson 提问时间:2/26/2022 更新时间:4/11/2022 访问量:701

问:

我正在尝试使用 maven-publish 插件将多个库从 android 中的同一项目发布到 github。我正在努力使一个人可以使用所有库来使用整个项目,例如import com.example.libraries;或将其作为单个模块导入,例如 import com.example.libraries.lib1、import com.example.libraries.lib2 等。但是,我无法这样做。使用 Github 是否可以做到这一点,如果可以,如何去做?

  //build.gradle for lib1
       publications {
            maven(MavenPublication) {

                groupId "com.github.example.libraries"
                artifactId "lib1"
                version System.getProperty("version")

                artifact "/build/outputs/aar/lib1-release.aar"
}

  //build.gradle for lib2
       publications {
            maven(MavenPublication) {

                groupId "com.github.example.libraries"
                artifactId "lib2"
                version System.getProperty("version")

                artifact "/build/outputs/aar/lib2-release.aar"
}
Android Maven GitHub android-gradle-plugin maven-plugin

评论

0赞 Abdul Mateen 10/2/2023
有什么解决方案吗?

答:

0赞 Raul Maza 4/11/2022 #1

我用口味想出了一个类似问题的解决方案。

但是,如果您在不同的模块中有 lib1 和 lib2,则您的解决方案应该通过使用每个 build.gradle 文件中的 maven-publish 插件来工作。

首先,根据需要声明尽可能多的口味:

flavorDimensions "libs"
productFlavors {
    lib1 {
        dimension "libs"
    }
    lib2 {
        dimension "libs"
    }
}

然后,您可以使用 sourceSets 指定风格的来源:

sourceSets {
    main {
        java {
            java.srcDirs = ['src/main/java']
        }
        res {
            srcDirs = ['src/main/res']
        }
    }
    lib1 {
        java {
            java.srcDirs = ['src/main/java', 'src/lib1/java']
        }
    }
    lib2 {
        java {
            java.srcDirs = ['src/main/java', 'src/lib2/java']
        }
    }
}

最后,您可以使用 maven-publish 插件发布这两个库:

publishing {
publications {
    lib1(MavenPublication) {
            groupId "com.github.example.libraries"
            artifactId "lib2"
            version System.getProperty("version")
            artifact("/build/outputs/aar/lib2-release.aar") {
            extension 'aar'
        }
    }
    lib2(MavenPublication) {
            groupId "com.github.example.libraries"
            artifactId "lib2"
            version System.getProperty("version")
            artifact("/build/outputs/aar/lib2-release.aar") {
            extension 'aar'
        }
    }
  }
}