Maven或Gradle构建类型/变体

Android Gradle插件增加了对构建类型和构建变体的支持,使您可以在构建步骤(例如,调试或发布)中选择要构建的应用程序版本。

这对于Gradle项目来说是一个非常有用的function,因为您可以拥有两个版本的应用程序,这些版本在某些情况下可能表现不同,或者具有不同的配置文件或属性,具体取决于构建类型。

现在,我的问题是:Maven或Gradle的非Android Java项目是否有类似的function/实现? 我正在寻找专门针对Java Web应用程序,但我认为这个问题也可能有更大的目标。

在没有模糊答案的情况下切割它,这是Luke Daley (Gradleware Engineer)对此事的官方回应:

这是我们积极致力于的事情。 我们正在努力以一般方式支持变体的概念,以便跨域使用一致的方法。 这是一个深刻的,深刻的变化,但是涉及很多。

您可以在Gradle 2.5及其中看到这方面的内容。

后来编辑:我终于能够通过使用SourceSets而不是Build Types&Variants来实现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" }