我正在构建一个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 --另一个项目的依赖树--有此特性,这似乎支持我的观点,即该项目没有带来它的依赖项.
> | +--- 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就行了发布于 2017-02-21 20:14:14
我觉得您的问题是在部署您的手工艺品,因为它编译OK。
确保您的部署/上载定义与目标伪存储库的格式相同(在您的示例中是本地maven,对吗?)您可以通过查找目标文件夹中的pom文件(或根据定义而定的常春藤文件)来检查这一点,并检查它是否包含正确格式的详细信息。
你的定义是这样的吗?
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
}请参阅maven插件的分级文档中的详细信息
有关发布的更多信息可以在关于出版的分级文档中阅读,更多关于依赖关系解析和模式的信息可以在关于依赖性管理的分级文档中找到。
发布于 2017-02-21 20:17:12
将依赖项应用于所有子项目。
subprojects {
dependencies {
// ...
}
}还有一个完整的api可以选择特定的项目并将配置应用到它们。
configure([project(":a"), project(":b"), project(":c")]) {
dependencies {
// ...
}
}
configure(subprojects.findAll { it.name.startsWith("prefix") }) {
dependencies {
// ...
}
}此外,如果希望传递依赖项工作,则需要通过gradle添加项目间依赖项。
dependencies {
compile project(":toolbox")
}https://stackoverflow.com/questions/42371343
复制相似问题