java - Gradle 依赖管理

标签 java gradle dependency-management

我正在构建一个 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/

相关文章:

具有单个公开 Artifact 和内部依赖项的 Maven 结构

spring - 使用 Spring.IO 依赖管理,如何覆盖特定 jar 的版本?

android - AAPT在使用构建工具的Debian Jenkins Server Gradle Build上失败24. +

java - 随机种子之间的区别重要吗?

java - 将控制字符发送到Java中的外部进程

java - Apache Camel如何以 "body"格式提交正文

android - 同时使用 ProGuard 和 R8

android - 测试构建达到 65k 方法 dex 限制

python - 如何重新定位/隐藏 python 包?

java - 不能在 JDBC PreparedStatement 中使用 LIKE 查询?