Java 如何在Gradle中指定ServletAPI版本?

Java 如何在Gradle中指定ServletAPI版本?,java,spring,tomcat,gradle,spring-boot,Java,Spring,Tomcat,Gradle,Spring Boot,我找到了一种方法来指定目标servlet api版本,并在maven中使用Tomcat 7: 可以通过在pom.xml中设置以下属性来完成: <properties> <tomcat.version>7.0.56</tomcat.version> <servlet-api.version>3.0.1</servlet-api.version> </properties> 7.0.56 3.0.1 但我不

我找到了一种方法来指定目标servlet api版本,并在maven中使用Tomcat 7: 可以通过在pom.xml中设置以下属性来完成:

<properties>
    <tomcat.version>7.0.56</tomcat.version>
    <servlet-api.version>3.0.1</servlet-api.version>
</properties>

7.0.56
3.0.1
但我不知道如何在Gradle build中设置它

试试这个:

ext {
    tomcatVersion = "3.1.0.RELEASE"
    servlet-apiVersion = "build@master.org"
}

不幸的是,重写属性以设置依赖项的版本只在Maven中有效。您可以使用分辨率策略在Gradle中实现相同的效果。以下内容将导致Boot的所有Tomcat依赖项都升级到7.0.56版本:

configurations.all {
    resolutionStrategy {
        eachDependency {
            if (it.requested.group == 'org.apache.tomcat.embed') {
                it.useVersion '7.0.56'
            }
        }
    }
}

根据进程列表,它仍在运行Tomcat8。但是,我不太关心tomcat版本。我主要关心ServletAPI版本。是否有可能以类似的方式更改Servlet API版本?Tomcat 8需要Servlet 3.1,因此尝试将3.0与之配合使用是行不通的。您是如何从流程列表中得知Tomcat 8仍在使用的?您正在部署到独立容器吗?运行
gradle dependencies
可以确认您构建的当前使用的版本。可以在运行过程中查看类路径,并查看使用了哪些jar版本。嗯,我已经放弃了spring boot,因为它还有其他问题。我在一个小的独立项目中尝试了这个改变,我实际上看到它采用了tomcat7,但在作为系统一部分的子项目中,它对我不起作用。也许是我们的gradle脚本出了问题,我不知道,但这些天我不想弄清楚,对不起,也许过一段时间我会尝试一下,因为我喜欢spring boot的概念。底线是这个改变似乎只在一个最小的项目中起作用,所以我将它标记为最佳答案。虽然它没有解决我的特殊情况下的问题。“servlet apiVersion”的语法无效。。然而,我不认为gradle插件会从ext中获取这些值,因为我对插件数据库进行了灰色搜索,没有发现任何关于tomcat或ServletAPI版本的提及。它看起来没有实现。