build.gradle War在Web-Inf/lib下添加了额外的JAR文件



我是Gradle的新手。对于Gradle,我有多个项目构建文件。项目构建文件的大多数都是正确配置的,并且可以正常工作并生成正确的输出。我正在尝试将其中一个项目从Ant Build转换为Gradle Build。我能够编译Java文件并能够生成战争档案。

我已经在生成的战争文件中注意到的一件事是,Web-Inf/lib目录中包含其他JAR文件。当我从蚂蚁构建系统构建项目时,只有很少的jar文件(大约10-12),但是使用gradle,它包含了许多其他其他JAR文件(大约90-92)。我有目录结构中的jar文件。

这是build.gradle文件的依赖项块:

dependencies {
    compile fileTree(dir: 'lib', include: '*.jar')
}

我是Gradle系统的新手。因此,我可能会错过一些要注意的要点,但是我不知道他们是哪个。谁能指导我在多个项目Gradle Build System中照顾哪些点依赖性管理?这个问题的解决方案是什么?

您可以将jars添加到Web-Inf/lib,将所需的文件夹添加到WAR插件配置:

war {
 classpath fileTree('desiredFolder') 
}

从https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.war.html

提取

classpath class path将包括在战争档案中。任何罐子或拉链 该类Path中的文件包含在Web-Inf/lib目录中。任何 此类路径中的目录包含在Web-Inf/类中 目录。

希望这对您有帮助!

gradle添加额外罐子的原因是因为库在依赖项中声明可能具有其他依赖关系。

尝试使用提供compile 提供的runtime 避免对战争增加额外的依赖。

添加库尝试使用 classpath 如https://docs.gradle.org/current/userguide/war_plugin.html

" <strong"部分>自定义显示:

war {
from 'src/rootContent' // adds a file-set to the root of the archive
webInf { from 'src/additionalWebInf' } // adds a file-set to the WEB-INF dir.
classpath fileTree('additionalLibs') // adds a file-set to the WEB-INF/lib dir.
classpath configurations.moreLibs // adds a configuration to the WEB-INF/lib dir.
webXml = file('src/someWeb.xml') // copies a file to WEB-INF/web.xml 
}

最新更新