Gradle:使用jar依赖项进行一场激烈的战争

时间:2019-02-22 19:08:27

标签: gradle groovy ant ivy

我正在尝试从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中?

1 个答案:

答案 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-beansspring-corespring-tx ... )放在 / WEB-INF / lib 文件夹中。