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.jar
和 other -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/