我正在构建一个 jar 文件,该文件在编译时依赖于 3 个 logback 工件(log-back-code、log-back-classic、logback-extensions)
这些都是在compile
范围内声明的。
我的 jar 已构建,但是当我尝试在不同的项目中使用它时,我发现我需要再次指定 3 个 logback 依赖项,否则找不到类。我希望通过声明对 jar 的依赖来满足这些依赖关系。
我是 gradle 新手,并且对现有脚本只有粗略的了解。
编辑 - 添加了依赖项配置的一些详细信息
在构建jar文件的项目中,依赖关系声明如下
编译组:'ch.qos.logback',名称:'logback-classic',版本:'1.2.1'
编译组:'ch.qos.logback',名称:'logback-core',版本:'1.2.1'
编译组:'org.logback-extensions',名称:'logback-ext-spring',版本:'0.1.4'
我生成的 jar 文件在“其他”项目依赖项中声明为
编译组:'mygroup',名称:'mylogback',版本:'1.0.0-SNAPSHOT'
此依赖项是从我的本地 Maven 存储库中提取的,而 logback 依赖项来自 nexus 存储库。
进一步编辑
另一个项目的依赖关系树有这个,这似乎支持我的观点,即该项目没有带来它的依赖关系......
> | +--- commons-io:commons-io:2.5 | \---
> commons-collections:commons-collections:3.2.2
> +--- mygroup:mylogback:1.0.0-SNAPSHOT
> +--- ch.qos.logback:logback-classic:1.2.1 | +--- ch.qos.logback:logback-core:1.2.1 | \--- org.slf4j:slf4j-api:1.7.22
> +--- ch.qos.logback:logback-core:1.2.1
> +--- org.logback-extensions:logback-ext-spring:0.1.4 | \--- ch.qos.logback:logback-classic:1.1.1 -> 1.2.1 (*)
分辨率
回答我自己的问题,问题是由于
- 我的构建脚本中缺少
maven-publish
插件 - 格式错误的
发布
任务,发布了artefact:jar
。将其从 Components.java 更改为就成功了
最佳答案
我感觉你的问题出在你的工件的部署上,因为它编译正常。
确保您的部署/上传定义与目标工件存储库的格式相同(在您的情况下是本地 maven,对吧?)。您可以通过在目标文件夹中查找 pom 文件(或 ivy 文件,具体取决于您的定义)来检查这一点,并检查它是否包含格式正确的详细信息。
你的定义是这样的吗? :
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}
查看更多详细信息The Gradle documentation on maven plugin
有关发布的更多信息,请参阅 Gradle documentation on publishing有关依赖解析和一般模式的更多信息可以在 Gradle documentation on dependency management 中找到。
关于java - Gradle 依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371343/