我正在尝试从Ant + Ivy迁移到Gradle,并且无法正确包含传递依赖项。
例如,我具有以下Ivy依赖项:
<dependency org="org.springframework" name="spring-jdbc" rev="4.2.0.RELEASE"/>
如Ivy报告所示,此工件取决于spring-tx
,Ivy正在检索该工件并将其作为罐子放置到WEB-INF/lib
中。但是Gradle默认情况下不会执行此操作,并且此代码也无法解决问题(它只是没有在其中放置任何spring-tx
相关的.class
文件):
from { configurations.compileClasspath
.findAll { !it.name.endsWith('pom') }
.collect { it.isDirectory() ? it : zipTree(it) } } {
into('WEB-INF/classes')
}
有人知道我如何将传递依赖项包含在jar中并将其放入WEB-INF\lib
中?
答案 0 :(得分:0)
可以使用Gradle war
插件(请参见War Plugin documentation)。
下面是一个非常简单的build.gradle
脚本示例,该脚本将创建一个war
,其中包含/WEB-INF/lib
下的所有必需依赖项(以及可传递依赖项)
plugins{
id "war"
}
repositories {
mavenCentral()
}
dependencies{
implementation group: 'org.springframework', name: 'spring-jdbc', version: '4.2.0.RELEASE'
}
由war
生成的./gradlew build
将包含所有spring-jdbc
库及其依赖项(spring-beans
,spring-core
,spring-tx
... )放在 / WEB-INF / lib 文件夹中。