Gradle产品风味在“纯”Gradle(而不是Android Gradle)中

6
我希望使用Gradle为不同的客户构建Java库。是否有像Android中的产品风味一样的东西在“纯” Gradle中已知?谢谢。
1个回答

1
答案是肯定的,但你需要使用新的Gradle软件模型,这个模型仍处于孵化阶段。这将是一条充满痛苦的路,因为你将成为开拓者,就像我在C/C++项目中使用它时所学到的那样。以下是你的构建大致的样子。
plugins {
    id 'jvm-component'
    id 'java-lang'
}

model {
  buildTypes {
    debug
    release
  }
  flavors {
    free
    paid
  }
    components {
        server(JvmLibrarySpec) {
            sources {
                java {
                  if (flavor == flavors.paid) {
                    // do something to your sources
                  }
                  if (builtType == buildTypes.debug) {
                    // do something for debuging
                  }
                    dependencies {
                        library 'core'
                    }
                }
            }
        }

        core(JvmLibrarySpec) {
            dependencies {
                library 'commons'
            }
        }

        commons(JvmLibrarySpec) {
            api {
                dependencies {
                    library 'collections'
                }
            }
        }

        collections(JvmLibrarySpec)
    }
}

参考资料: 1)Java软件模型https://docs.gradle.org/current/userguide/java_software.html 2)Flavors https://docs.gradle.org/current/userguide/native_software.html 注:我不确定Flavors在Java软件模型中的支持情况,我会进行一些测试并报告结果。
更新:这是可行的,但目前JvmLibrarySpec不支持。我将尝试发布一个更完整的答案,并提供如何使用自定义规范的示例。

@RaGe 我更新了引用。我需要做一些双重检查,以确保它按照注释的方式工作。我专门在 c/cpp 中使用软件模型,而不是在我们的 Android/Java 项目中。让我进行一些测试,然后我会回报。 - Michael Hobbs
@RaGe 可以做到,但目前 JvmLibrarySpec 不支持。要做到这一点,您将不得不创建自己的规范。我会尝试明天发布一个示例。 - Michael Hobbs
@MichaelHobbs:你有一个完整的最小示例吗? - sbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接