2015-06-15 6 views
3

Build Flavors обычно используются в приложениях Android через плагин android gradle. Это позволяет проекту иметь структуру каталоговBuild Flavors for Java project

src 
    - main 
    - com.stack.A.java 
    - debug 
    - com.stack.B.java 
    - release 
    - com.stack.B.java 

Это будет только собрать правильный B.java в зависимости от типа выпуска, который был выбран.

Есть ли способ отразить эту функциональность без использования плагина android gradle и просто использовать java-плагин?

ответ

3

Это называется sourceSet в Java плагин см https://docs.gradle.org/current/userguide/java_plugin.html

main и test sourceSets создаются автоматически, чтобы добавить больше sourceSets вы можете сделать что-то, как показано ниже. В основном оба выпуска и отладки также используют коды в основном

apply plugin: 'java' 

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

    debug { 
     java { 
      srcDirs 'src/main/java', 'src/debug/java' 
     } 
    } 
} 
2

Я написал плагин для этого. Например

apply plugin: 'com.lazan.javaflavours' 
javaFlavours { 
    flavours = ['free', 'paid'] 
} 

Тогда источники в src/free/java и src/paid/java и ресурсы в src/free/resources и src/paid/resources

проекта на GitHub: https://github.com/uklance/gradle-java-flavours

+0

выглядит очень многообещающе! Но как выбрать в IntelliJ IDEA, какой вкус я хочу использовать (например, какой 'someFlavourCompile' должен быть доступен в проекте)? –

+0

Задачи для всех вкусов будут указаны в IDEA. Если вы хотите ограничить вкус, я думаю, вы могли бы использовать какое-то настраиваемое свойство, чтобы определить список вкуса, который вы редактируете –