为 Java 项目构建 Flavors

Pau*_*son 7 java gradle

Build Flavors 通常通过 android gradle 插件在 Android 应用程序中使用。这允许项目具有目录结构

src
  - main
    - com.stack.A.java
  - debug
    - com.stack.B.java
  - release
    - com.stack.B.java
Run Code Online (Sandbox Code Playgroud)

这只会B.java根据已选择的发布类型编译正确的。

有没有办法在不使用android gradle插件而只使用java插件的情况下镜像这个功能?

小智 5

它在 Java 插件中称为 sourceSet,参见https://docs.gradle.org/current/userguide/java_plugin.html

maintestsourceSets 是自动创建的,要添加更多 sourceSets,您可以执行以下操作。基本上发布和调试都使用 main 中的代码

apply plugin: 'java'

sourceSets {
    release {
        java {
            srcDirs 'src/main/java', 'src/release/java'
        }
    }

    debug {
        java {
            srcDirs 'src/main/java', 'src/debug/java'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


lan*_*ava 5

我写了一个插件来实现这一点。例如

apply plugin: 'com.lazan.javaflavours'
javaFlavours {
    flavours = ['free', 'paid']
}
Run Code Online (Sandbox Code Playgroud)

然后,在源src/free/javasrc/paid/java在资源src/free/resourcessrc/paid/resources

github项目:https : //github.com/uklance/gradle-java-flavours