我正在构建一个jar文件,在编译时,它依赖于3个logback伪影(log-back-code,log-back-classic,logback-extensions)
这些都是compile
范围声明的。
我的jar构建,但是当我尝试在不同的项目中使用它时,我发现我需要再次指定3个logback依赖项,否则找不到类。我希望通过声明对jar的依赖来实现这些依赖性。
我刚接触并使用现有的脚本,我只有最清楚的理解。
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
可以解决问题答案 0 :(得分:1)
我觉得你的问题在于你的人工制品的部署,因为它编译好了。
确保您的部署/上传定义与目标artefact存储库的格式相同(在您的情况下为本地maven,对吗?)。您可以通过在目标文件夹中查找pom文件(或常春藤文件,具体取决于您的定义)来检查这一点,并检查它是否包含正确格式的详细信息。
你的定义是这样的吗? :
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
答案 1 :(得分:0)
将依赖项应用于所有子项目。
subprojects {
dependencies {
// ...
}
}
还有一个完整的api能够选择特定项目并对其应用配置。
configure([project(":a"), project(":b"), project(":c")]) {
dependencies {
// ...
}
}
configure(subprojects.findAll { it.name.startsWith("prefix") }) {
dependencies {
// ...
}
}
此外,如果您希望传递依赖项工作,则需要通过gradle添加项目间依赖项。
dependencies {
compile project(":toolbox")
}