gradle - Gradle:与 jar 依赖建立一场脂肪大战
问题描述
我正在尝试从 Ant + Ivy 迁移到 Gradle,但无法正确包含传递依赖项。
例如,我有以下 Ivy 依赖项:
<dependency org="org.springframework" name="spring-jdbc" rev="4.2.0.RELEASE"/>
正如 Ivy 报告显示的那样,这个工件依赖于spring-tx
,它正在被 Ivy 检索并WEB-INF/lib
作为 jar 放置。但是 Gradle 默认情况下不会这样做,并且这段代码也不会这样做(它只是没有将任何spring-tx
相关.class
文件放在那里):
from { configurations.compileClasspath
.findAll { !it.name.endsWith('pom') }
.collect { it.isDirectory() ? it : zipTree(it) } } {
into('WEB-INF/classes')
}
有谁知道我如何将传递依赖项包含为 jars 并将它们放入WEB-INF\lib
?
解决方案
Gradlewar
插件可用于此目的(请参阅War 插件文档)。
下面是一个非常简单的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
with./gradlew build
将包含/WEB-INF/lib 文件夹中的所有spring-jdbc
库及其依赖项 ( spring-beans
, spring-core
, spring-tx
...) 。
推荐阅读
- powershell - Powershell:如何启动/停止服务以及启动时尚未运行的所有必需服务?
- sql-server - 为什么此列未转换为小数
- javascript - REACT:如何绑定和呈现多个值
- java - 如何用 Guice 注入 Hk2 bean
- sql-server - pyodbc 错误:在 docker 容器中使用 django
- json - Google Scripts JSON 问题 - 总新手老师试图帮助学生
- selenium-webdriver - 升级后在headless/normal模式下查找并点击与capybara不一致
- java - RecyclerView 在滚动到最后一个 Item 时崩溃
- r - R 计算结果不超过阈值
- featherlight.js - Featherlight Image Count Index/Total [索引错误]