java - 如何仅将库中的特定 jar 包含到 gradle 构建中?
问题描述
我正在使用gradle V4.10.2
和eclipse
构建WAR
文件。我有一些JAR
所有战争的通用文件。我需要它们仅在编译时使用,并且需要在构建WAR
文件时排除它们。另外我不想排除所有的JAR
s 文件。
我已将所有 JAR 放在libs
文件夹中。在build.gradle
中,我只指定了要包含的 JAR。由于排除列表更大,因此包含我未使用的 JAR 列表exclude
war {
rootSpec.include("**/test.jar")
}
以上结果是WAR
没有META-INF
文件夹的文件。因此,webapp 没有启动。reference lib
我曾尝试像in那样添加库,eclipse
但这会导致编译错误。
Execution failed for task ':compileJava'.
Compilation failed; see the compiler error output for details
所以我必须在 libs 文件夹中包含所有 JAR,然后只需要在构建的 WAR 中使用所需的 JAR。如何在构建中仅包含特定的 JAR?
解决方案
我强烈建议阅读有关使用 Gradle 构建 Java 项目的内容,尤其是有关Web 应用程序的部分
简而言之,您应该只将编译所需的 JAR 添加到compileOnly
配置中,并将编译和运行时所需的 JAR 添加到implementation
配置中。然后 Gradle 将使用所有它们进行编译,并且仅在implementation
打包 WAR 时将它们包含在内。
虽然您可以通过从libs
文件夹中选择它们来做到这一点,但我强烈建议您移动到库及其来自存储库(私有或公共)的元数据,以便为您完成依赖管理。