如何理解以下build.gradle脚本:
buildscript
{
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-tomcat-plugin:2.4.1'
}
}根据我的理解,repositories{}定义了dependencies{}位置。
我看到封装在dependencies中的buildscript定义了tomcat插件。但是,用这种奇怪的方式来做这件事有什么想法呢?
整个剧本:
apply plugin: 'com.bmuschko.tomcat'
apply plugin: 'eclipse-wtp'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-tomcat-plugin:2.4.1'
}
}
dependencies {
def tomcatVersion = '8.0.46'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
api 'org.apache.commons:commons-math3:3.6.1'
}
tomcat {
httpPort = 8080
enableSSL = true
contextPath = '/library-spring'
}发布于 2020-11-26 17:15:25
现在,几乎所有用于Gradle的插件都已发布到Gradle插件门户中,因此Gradle知道如何解决它们,您可以简单地使用plugins块在构建脚本中定义它们:
plugins {
id 'com.bmuschko.tomcat' version '2.5'
}在Gradle的早期,插件只能以与任何其他库相同的方式分发,例如使用像Maven Central或Bintray这样的公共Maven存储库。通过这种方式,它们可以像其他库一样被解析,使用dependencies块来定义什么是,使用repositories块来定义要解析的所在的。
使用常规repositories和dependencies块的问题是,在计算构建脚本时加载这些依赖项。但是要评估构建脚本,插件库必须在类路径上。
因此,引入buildscript块是为了在评估实际构建脚本之前加载所有依赖项。这也是为什么buildscript块应该始终放在构建脚本中的第一位的原因:
buildscript {
repositories {
// where to resolve dependencies of your build script
}
dependencies {
// what dependencies to resolve for your build script
}
}
repositories {
// where to resolve dependencies of your project code
}
dependencies {
// what dependencies to resolve for your project code
}https://stackoverflow.com/questions/65026127
复制相似问题