首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等级依赖管理

等级依赖管理
EN

Stack Overflow用户
提问于 2017-02-21 15:23:24
回答 2查看 241关注 0票数 0

我正在构建一个jar文件,它在编译时依赖于3个logback伪文件(日志回退代码、日志回退-经典、logback-扩展名)。

这些都是用compile作用域声明的。

我的jar构建,但是当我尝试在不同的项目中使用它时,我发现我需要再次指定3 logback依赖项,否则就找不到类。我希望通过声明jar上的依赖来实现这些依赖。

我对gradle还是新手,并且使用现有的脚本,我对这些脚本只有最粗略的理解。

EDIT - Added some details of the dependency config

在构建jar文件的项目中,依赖项声明如下

compile group: 'ch.qos.logback',name: 'logback-classic', version: '1.2.1' compile group: 'ch.qos.logback',name: 'logback-core', version: '1.2.1' compile group: 'org.logback-extensions',name: 'logback-ext-spring', version: '0.1.4'

我作为产品的jar文件在“其他”项目依赖项中声明为compile group: 'mygroup',name: 'mylogback', version: '1.0.0-SNAPSHOT'

这个依赖关系是从我的本地maven存储库中提取的,而logback依赖项则来自于nexus。

Further Edit --另一个项目的依赖树--有此特性,这似乎支持我的观点,即该项目没有带来它的依赖项.

代码语言:javascript
复制
> |    +--- 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 (*)

Resolution

为了回答我自己的问题,这个问题是

  • 构建脚本中缺少maven-publish插件
  • 一项格式糟糕的publishing任务,它发布了artefact:jar。把这个变成from components.java就行了
EN

回答 2

Stack Overflow用户

发布于 2017-02-21 20:14:14

我觉得您的问题是在部署您的手工艺品,因为它编译OK。

确保您的部署/上载定义与目标伪存储库的格式相同(在您的示例中是本地maven,对吗?)您可以通过查找目标文件夹中的pom文件(或根据定义而定的常春藤文件)来检查这一点,并检查它是否包含正确格式的详细信息。

你的定义是这样的吗?

代码语言:javascript
复制
apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://localhost/tmp/myRepo/")
        }
    }
}

请参阅maven插件的分级文档中的详细信息

有关发布的更多信息可以在关于出版的分级文档中阅读,更多关于依赖关系解析和模式的信息可以在关于依赖性管理的分级文档中找到。

票数 1
EN

Stack Overflow用户

发布于 2017-02-21 20:17:12

将依赖项应用于所有子项目。

代码语言:javascript
复制
subprojects {
    dependencies {
        // ...
    }
}

还有一个完整的api可以选择特定的项目并将配置应用到它们。

代码语言:javascript
复制
configure([project(":a"), project(":b"), project(":c")]) {
    dependencies {
        // ...
    }
}

configure(subprojects.findAll { it.name.startsWith("prefix") }) {
    dependencies {
        // ...
    }
}

此外,如果希望传递依赖项工作,则需要通过gradle添加项目间依赖项。

代码语言:javascript
复制
dependencies {
    compile project(":toolbox")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42371343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档