Android Gradle插件增加了对构建类型和构建变体的支持,允许您在构建步骤(例如,调试或发布)中选择要构建的应用程序版本。
对于Gradle项目,这是一个非常有用的功能,因为您可以拥有两个版本的应用程序,在某些情况下可能会有不同的行为,或者根据构建类型具有不同的配置文件或属性。
现在,我的问题是:Maven或Gradle的非Android Java项目是否有类似的功能/实现?我正在寻找专门针对Java Web应用程序,但我认为问题也可能有更大的目标。
答案 0 :(得分:4)
在没有模糊答案的情况下将其删至追踪,这是Luke Daley (Gradleware Engineer)
对此问题的官方回应:
这是我们正在积极努力的事情。我们正在努力提供支持 一般来说变体的概念,所以会有一个 跨域的一致方法。然而,这是一个深刻而深刻的变化 所以涉及很多。
你可以期待在Gradle 2.5和 上。
稍后编辑:我终于能够通过使用SourceSets而不是Build Types&amp ;;来完成JavaEE webapp项目的工作。变种。考虑到SourceSets已经存在了很长一段时间,显然你可以在很久以前完成这个......但即使是gradle工程师也无法正确解释如何这样做......
无论如何,请查看下面的build.gradle
代码,我们对两个SourceSets使用相同的输出目录,然后指定WAR插件的构建位置:
apply plugin: 'war'
sourceSets {
main {
output.resourcesDir = 'build/resources'
output.classesDir = 'build/classes'
}
debug {
java {
compileClasspath += main.output
runtimeClasspath += main.output
}
output.resourcesDir = 'build/resources'
output.classesDir = 'build/classes'
}
}
task assembleDebugWar(type: War) {
from sourceSets.debug.output
archiveName "ROOT.war"
}
task assembleReleaseWar(type: War) {
from sourceSets.main.output
archiveName "ROOT.war"
}