我是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/

10-11 22:21
查看更多