将多个库模块合并为一个

Posted

技术标签:

【中文标题】将多个库模块合并为一个【英文标题】:Merge multiple library modules into one 【发布时间】:2022-01-12 12:51:22 【问题描述】:

我正在尝试将我的 android 库的多个模块合并到一个单独的实现块中。例如

我有 3 个模块,当上传到 Maven 时会给出 3 个实现块:

implementation 'com.example.sdk:core:1.0.2'
implementation 'com.example.sdk:feature1:1.0.2'
implementation 'com.example.sdk:feature2:1.0.2'

但我也想将它们合并到一个 maven 发布为:

implementation 'com.example.sdk:android-sdk:1.0.2'

因此,想要实现所有核心和功能模块的用户可以使用单个实现行而不是多个实现行来实现。这可能吗?

我在我的主项目中使用这些类路径:

classpath 'com.vanniktech:gradle-maven-publish-plugin:0.18.0'
classpath 'org.jetbrains.dokka:dokka-gradle-plugin:1.4.10.2'

在每个库模块中添加一个新的 gradle.properties 文件并在其中添加以下代码段:

GROUP=com.example.sdk 
POM_ARTIFACT_ID=core 
VERSION_NAME=1.0.2 

POM_NAME=core 
POM_PACKAGING=aar 

POM_DESCRIPTION=Test for multi-module lib 
POM_INCEPTION_YEAR=2021 

POM_URL=GITHUB_URL 
POM_SCM_URL= GITHUB_URL 
POM_SCM_CONNECTION= GITHUB_URL.git 
POM_SCM_DEV_CONNECTION=scm:git@GITHUB_URL 

POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt 
POM_LICENCE_DIST=repo

并使用 ./gradlew publish --no-daemon --no-parallel 推送到 maven

如果需要更多信息,请告诉我。

【问题讨论】:

【参考方案1】:

尝试创建一个名为./folder-deps/my-core.gradle 的文件,内容如下:

dependencies
  implementation 'com.example.sdk:core:1.0.2'
  implementation 'com.example.sdk:feature1:1.0.2'
  implementation 'com.example.sdk:feature2:1.0.2'

在所有build.gradle 从文件my-core.gradle 中导入您的模块:

apply from: "$rootDir/folder-deps/my-core.gradle"

【讨论】:

但这将适用于我的项目,这对我在 Maven 上发布有何帮助?因为我想要一个 Maven 实现链接而不是多个。 还编辑了我的问题以使其更清楚,希望它有助于了解我的问题

以上是关于将多个库模块合并为一个的主要内容,如果未能解决你的问题,请参考以下文章

nginx多个请求合并

Git - 子模块

使用 CMake 将几个静态库合并为一个

python itertools模块练习

将 GitHub 项目的分支发布到新的 NPM 模块,但保留与原始模块合并的选项?

python--pandas合并与连接