Gradle - 如何强制依赖项进入 WEB-INF/lib

Gradle - How to force dependencies into the WEB-INF/lib

我希望将依赖项 jar 复制到 war 文件的 WEB-INF/lib 目录中,无论它们是否可传递项目。有办法实现吗?

我的 build.gradle 在下面,我尝试了多种选择。有没有办法确保一组特定的罐子出现在 war 无论如何?

build.gradle

plugins {
    id 'war'
}

war {
    manifest { attributes("Class-Path": "resources/") }
    version = null
}

//Does not contain the jackson libraries
providedCompile project(":components:Manager")

dependencies {
    //Doesn't work
    implementation libraries.jackson_core
    implementation libraries.jackson_databind
    implementation libraries.jackson_annotations
    
    providedCompile(
            //Doesn't work
            libraries.jackson_core,
            libraries.jackson_databind,
            libraries.jackson_annotations,
            ///
            libraries.mybatis,
            libraries.mybatis_cdi,
            libraries.javax_ejb,
            libraries.javax_rs
    )

    compile "javax:javaee-api:$jeeVersion" //The only jar that appears in the WEB-INF/lib folder
    
    //Doesn't work
    compile(
            libraries.jackson_core,
            libraries.jackson_databind,
            libraries.jackson_annotations,
    )

}

通过设置自定义 warLib configuration

解决了我的问题

Credit

plugins {
    id 'war'
}

configurations {
    warLib
}

providedCompile project(":components:Manager")

dependencies {
   
    providedCompile(
            libraries.mybatis,
            libraries.mybatis_cdi,
            libraries.javax_ejb,
            libraries.javax_rs
    )

    compile "javax:javaee-api:$jeeVersion"
    
    warLib libraries.jackson_databind

}

war {
    classpath configurations.warLib
    manifest { attributes("Class-Path": "resources/") }
    version = null
}