我是Gradle的新手。它显示了。
我们有一个build.gradle,它使用在
com.bmuschko:gradle-docker-plugin:3.0.11和de.undercouch.download:3.3.0 Artifact 。在通过de.undercouch.download插件提供的下载任务获取一组 Assets (文件)之后,通过com.bmuschko.docker-remote-api插件创建了镜像。效果很好。
这是我们的build.gradle的一个片段,希望用法很清楚。有点节省空间。
task buildImage( type: DockerBuildImage){
dependsOn "gatherAssets"
... other properties
}
task gatherAssets( dependsOn ["task1","task2",..."taskN" ] ) {
doLast {
println 'Gathering Assets for ' + imageName
}
}
task task1(type: Download) {
src "${NEXUS_DOWNLOAD_ROOT}/org/alfresco/alfresco-mmt/${MMT_VERSION}/${ALFRESCO_MMT_JAR}"
dest Paths.get(ASSETS_DIR, ALFRESCO_MMT_JAR).toFile()
}
我现在想做的是使用Maven存储库来获取至少一项 Assets 。使用模块依赖关系将是理想的-指定存储库,模块并让Gradle进行操作。特别是如果我使用虚拟
存储库以允许使用已修补的 Assets 。无需更改build.gradle脚本。如果修补的依赖项在本地(第一物理)存储库中,请捕获它。
我希望基于(https://docs.gradle.org/5.2.1/dsl/org.gradle.api.Task.html#org.gradle.api.Task:dependsOn)
声明dependsOn只是一个Set ,虽然当前我们有一组任务名称,但为什么不期望对于dependsOn集中的每个这样的名称,如果找不到该名称的任务,则可能是模块名称声明并因此将其用作要解决和利用的依赖项?
像这样:
task gatherAssets( dependsOn ["mms-amp","task2",..."taskN" ] ) {
因此collectAssets将取决于一组显式依赖项引用和Gradle任务...
las,在v5.4.1中并非如此。
除了“java”外,我找不到可以使用依赖项构造的插件的配置。
我希望使用
apply plugin 'java'
会给我实现配置,因此允许以下操作:
dependencies {
// note that when we uploaded the amp artifact to the local repo, we had a POM generated.
// Gradle will fetch the pom, parse it to get the details on what to download... like an *.amp
// because we provide not-default properties for the dependency artifact.
implementation( group:'edu.stevens.serc', name: 'mms-amp', version: ${version} ) {
artifact {
name = 'mms-amp'
extension = 'amp'
type = 'amp' // needed ?
}
}
}
一个明显的新手问题:
引用依赖项的一般形式是什么?我是否有点天真地希望Gradle中的依赖关系概念不仅仅适用于Java构建?如果是这样,我会大声尖叫。
在上面的示例中,“mms-amp”不是我声明的1个依赖项的名称吗?因此,我放错了希望,使用
依赖集中的依赖项名称“mms-amp”就足够了。
是否已将Maven存储库的使用引入Gradle,“maven”插件仅用于将 Artifact 发布到存储库?
MTIA提供了任何见解,使用更好的插件的指针等。
最佳答案
一个答案。有点。我在https://docs.gradle.org/5.2.1/javadoc/org/gradle/api/artifacts/ConfigurationContainer.html中遇到了第一个示例
那正好显示了我的问题,希望能详细说明我要实现的目标。
我仍然不清楚类型的详细信息-为什么Copy任务的from方法可以采用ConfigurationContainer类型的对象,但这是我需要弄清楚的。它可以提供的功能非常强大。在上面的链接中,以下是代码段:
//copying all dependencies attached to 'compile' into a specific folder
task copyAllDependencies(type: Copy) {
//referring to the 'compile' configuration
from configurations.compile
into 'allLibs'
}
就我而言,我使用特定的配置将依赖项提取到 Assets 目录中,以包含在Docker镜像构建中。并且根据文档,配置名称不必位于java插件使用的配置中。我使用了特定于项目的配置,以使依赖项集合与那些其他源依赖项不相交。
关于gradle - 非Java构建对Gradle的依赖关系使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57190596/