我试图将两个项目(项目1和项目2)打包到同一个docker映像中,并在单独的文件夹中使用它们自己的依赖项。为此,我使用了第三个项目,即部署,该项目负责创建docker映像。我为不同的Gradle项目使用不同的依赖项版本时遇到以下问题:在项目中(部署)创建新配置并将另一个项目(项目1或2)的依赖项添加到新创建的配置的依赖项中时,的部署应用于配置依赖项,而不是项目1的dependencyManagement。
感谢您的帮助。
我的用例如下:
根项目---为所有项目定义一个Spring Platform importBom
allprojects {
dependencyManagement {
imports {
mavenBom "<spring-platform-bom>"
}
}
}
部署项目---其目的是将项目1和项目2打包到一个Docker映像中,其依赖项位于单独的文件夹中:
private static Task createDeploymentTask(entry, configurationName, project) { //project = deployment, entry = Map.Entry of {project1, project1ConfigurationName}
project.getConfigurations().create(configurationName)
project.getDependencies().add(configurationName, entry.getKey()) //how do I get only the dependencies of project1 ?
project.task("${configurationName}Task", type: Copy) {
into "${project.buildDir}/docker/libs/${entry.getValue()}"
from project.configurations."${configurationName}"
}
}
子项目1 ---使用Spring Paltform BOM中的番石榴(例如番石榴20)
dependencies {
compile 'com.google.guava:guava'
}
子项目2使用了较新的番石榴版本
dependencyManagement {
dependencies {
dependency 'com.google.guava:guava:26.0-jre'
}
}
dependencies {
compile 'com.google.guava:guava'
}
其结果是,项目1和项目2都具有构成Spring BOM的番石榴20,而不是项目2具有番石榴26版本。
如果我将这个部分添加到部署项目中,则:
dependencyManagement {
dependencies {
dependency 'com.google.guava:guava:26.0-jre'
}
}
然后项目1和项目2都有番石榴26,我不想要。