java - 为什么我的 jar 库中有未解析的符号?

标签 java gradle jar

Gradle v2.9(我知道旧的,但升级是另一个项目)

我明白了How to create my own java library(API)?我正在做类似的事情。

我非常熟悉 JAR 和编译 Java 代码。我也有 Maven 经验,我正在尝试在 Gradle 中执行此操作,但基本原理应该是相同的。

我想创建一个库,其中包含其他库。所以我有这个 build.gradle 文件

myLib/build.gradle:
dependencies {
  compile "com.someDomain:other-lib:1.0.0"
}

我可以毫无问题地构建myLib-1.1.0.jar,并将其部署到我的存储库

artifactId: myLib
groupId: com.myDomain
version: 1.1.0

现在我想使用 myLib.jar 构建另一个组件 myComp.war,所以我有这个

myComp/build.gradle:
dependencies {
  compile "com.myDomain:myLib:1.1.0"
}

所以我的依赖关系树如下,这意味着 myComp 使用 myLib 库,而后者又使用 other-lib 库。足够简单了。

com.myDomain:myComp:1.2.0
+--- com.myDomain:myLib:1.1.0
|    +--- com.someDomain:other-lib:1.0.0  <---- the symbol is in this library

当我为 myComp 运行 ./gradlew build 时,我同时看到 myLib-1.1.0.jarother -lib-1.0.0.jar 工件从我的中央存储库下载,并存储在我的 ~/.gradle 缓存中。但是,对于 other-lib.jar 中包含在 myLib.jar 文件中的符号,我收到 symbol not found 错误。有道理吗?

我错过了什么?

最佳答案

因为构建 jar 仅存档该项目源代码树中的文件,所以它不包括编译所依赖的 jar。要将其他 jar 打包在一个 jar 中,就像我想做的那样,请按照 How to include dependencies in a jar?来自 Gradle 论坛。

关于java - 为什么我的 jar 库中有未解析的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58925020/

相关文章:

java - jar 文件内的文件夹路径

maven - 如何在另一个项目中向Spring Boot Jar添加依赖项?

java - 在 Mac OS X 上运行 Java Jar 文件

java - 为什么我需要在此 Java 示例中强制转换 HttpURLConnection?

gradle - Gradle-构建Java Web应用程序

properties - Gradle额外属性在子项目中定义的自定义任务中不可见

android-studio - Android Studio 使用库时发生类冲突

java - HashMap 中的键条目为空字符串或 null

java - 如何将带连字符的 mysql 枚举类型映射到 JPA 实体?

java - 我添加范围 1 - 9999 条件的代码无法使用 switch 语句运行