【问题标题】:How to include only specific jar from libs into gradle build?如何仅将库中的特定 jar 包含到 gradle 构建中?
【发布时间】:2019-09-12 13:13:09
【问题描述】:

我正在使用 gradle V4.10.2eclipse 构建 WAR 文件。我有一些常见的JAR 文件用于所有战争。我需要它们仅在编译期间使用,并且需要在构建到 WAR 文件时排除它们。另外我不想排除所有JARs 文件。

我已将所有 JAR 放入 libs 文件夹中。在build.gradle 中,我只指定了要包含的JAR。由于排除列表更大,因此包含我不使用的 JAR 列表exclude

war {
    rootSpec.include("**/test.jar")
}

上面的结果是WAR 文件没有META-INF 文件夹。因此,webapp 没有启动。我尝试在eclipse 中将库添加为reference lib,但这会导致编译错误。

Execution failed for task ':compileJava'.
Compilation failed; see the compiler error output for details

所以我必须在 libs 文件夹中包含所有 JAR,然后只需要在构建的 WAR 中使用所需的 JAR。如何在构建中仅包含特定的 JAR?

【问题讨论】:

  • 也许这会有所帮助:docs.gradle.org/4.10.2/userguide/…
  • 你不应该使用 lib 目录,它是 2019 年(而且你不是一个用 ant 构建的穴居人!)你应该使用可以参与依赖解析的存储库中的依赖项

标签: java gradle web-applications jar build.gradle


【解决方案1】:

我强烈建议阅读有关building Java projects with Gradle 的内容,尤其是有关web applications 的部分

简而言之,您应该只将编译所需的 JAR 添加到 compileOnly 配置中,并将编译所需的 JAR 添加到 implementation 配置中。 然后 Gradle 将使用所有这些进行编译,并且仅在打包 WAR 时包含 implementation 中的那些。

虽然您可以通过从您的 libs 文件夹中选择它们来做到这一点,但我强烈建议您移至来自存储库(私有或公共)的库及其元数据,以便为您完成依赖管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 2012-05-13
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2021-03-18
    • 2018-11-09
    相关资源
    最近更新 更多