Maven或Gradle构建类型/变体

时间:2015-03-17 08:46:09

标签: java maven java-ee gradle

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

对于Gradle项目,这是一个非常有用的功能,因为您可以拥有两个版本的应用程序,在某些情况下可能会有不同的行为,或者根据构建类型具有不同的配置文件或属性。

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

1 个答案:

答案 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"
}