代码之家  ›  专栏  ›  技术社区  ›  Leonid Bor

gradle:用jar依赖项构建一个胖战争

  •  0
  • Leonid Bor  · 技术社区  · 5 年前

    我正试图从ant+ivy迁移到gradle,无法正确地包含可传递依赖项。

    例如,我有以下常春藤依赖关系:

    <dependency org="org.springframework" name="spring-jdbc" rev="4.2.0.RELEASE"/>

    如常春藤报告所示,这个工件依赖于 spring-tx ,由常春藤检索并放置到 WEB-INF/lib 像罐子一样。但是gradle在默认情况下不会这样做,而且这个代码也不会这样做(它只是没有 春天德克萨斯 相关的 .class 其中的文件):

    from { configurations.compileClasspath
                .findAll { !it.name.endsWith('pom') }
                .collect { it.isDirectory() ? it : zipTree(it) } } {
            into('WEB-INF/classes')
        }
    

    有人知道我如何将可传递依赖项包含为jar并将它们放入 WEB-INF\lib ?

    0 回复  |  直到 5 年前
        1
  •  0
  •   M.Ricciuti    5 年前

    年级学生 war 插件可以用于此目的(请参见 War Plugin documentation )。

    下面是一个非常简单的例子 build.gradle 将创建 战争 所有需要的依赖项(和传递依赖项)都在 /WEB-INF/lib

    plugins{
        id "war"
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies{    
        implementation group: 'org.springframework', name: 'spring-jdbc', version: '4.2.0.RELEASE'
    
    }
    

    这个 战争 生产商 ./gradlew build 将包含所有 spring-jdbc 库及其依赖项( spring-beans , spring-core , spring-tx …… /WEB-INF/LIB 文件夹。