当前位置: 首页 > 面试题库 >

Maven或Gradle构建类型/变体

公西财
2023-03-14
问题内容

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

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

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


问题答案:

在没有模糊答案的情况下将其付诸实践,这是Luke Daley (Gradleware Engineer)对此事的官方回应:

这是我们正在积极努力的事情。我们正在以一种通用的方式来支持变体的概念,以便跨领域采用一致的方法。这是一个深刻的,深刻的变化,因此涉及很多方面。

您可以期望在Gradle 2.5及更高版本中看到此方面的内容。

以后的编辑: 通过使用SourceSets而不是Build Types&Variants,我终于能够在JavaEE
webapp项目上进行此工作。考虑到SourceSets已经存在了很长时间,显然您早就可以这样做了……但是,甚至gradle工程师也无法正确地解释如何做到这一点……

无论如何,请查看build.gradle下面的代码,其中我们为两个SourceSet使用相同的输出目录,然后指定要从中构建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"
}


 类似资料:
  • 我试图在互联网上找到解决方案,但并没有什么和我的案子有太大关系 问题是下一个,构建失败并获得错误:错误:未捕获的翻译错误:com.android.dx.cf.code.SimException:局部变量类型不匹配:尝试使用int类型的局部变量设置或访问java.lang.Object类型的值。这是忽略局部变量信息的. class转换工具的症状。 我有 2 个配置 } 问题是如果我关闭调试progu

  • 6.2 构建类型+产品定制=构建变种版本 正如我们前面看到的,每一个 Build Type 都会生成一个新的APK。 Product Flavors 也是这么做的:工程的输出将会尽可能的组合 Build Types 和 Product Flavors 的输出。 每一种组合(Build Type, Product Flavor)就是 构建变种 比如,以默认的 debug 和 release Buil

  • 正如前面章节所提到的,每一个 Build Type 都会生成新的 APK。Product Flavors 同样也会做这些事情:项目的输出将会组合所有的 Build Types 和 Product Flavors(如果有定义 Flavor)。每一种组合(包含 Build Type 和 Product Flavor)就是一个 Build Variant(构建变种版本)。例如,在之前的 Flavor 声

  • 我想将一个maven项目集成到我的gradle构建过程中。虽然我成功地将maven项目(这是一个war overlay项目)转换为gradle项目,但这样做有几个缺点。首先,maven tomcat插件可以轻松创建带有嵌入式tomcat实例的可运行jar。我找不到一个gradle插件来做这个工作。为了解决这个问题,我看到了四种不同的方法,我想知道哪一种是最好的,或者是否有其他的可能性。 null

  • 我需要为我的项目使用一个maven构建,而不是使用Eclipse的Gradle。 下面是我将使用的源代码:https://github.com/mongodb/mongo-kafka 有一些方法可以使用Gradle构建(https://www.baeldung.com/gradle-build-to-maven-pom)生成pom.xml文件。但是,我意识到*.kts扩展与Kotlin DSL有关

  • 其中我指定了一个远程maven存储库: 在这个回购中,我部署了一个工件--实际上它是一个gradle插件。 现在我尝试使用下面的build.gradle文件构建另一个需要使用这个插件/工件的项目: 即使我有上面的settings.xml文件指向远程maven存储库,Gradle也找不到my-gradle-plugin。 如果我在build.gradle文件中指定存储库,它就会起作用: 根据本职位: