如何在Gradle子项目中使用Gradle Artifactory插件

胡巴乔布

我有一个多项目gradle构建,其中子项目之一是应用Artifactory插件(版本4.2.0),并配置contextUrl并解析repoKey。

它设置了一个简单的配置和依赖项,然后执行复制任务以将依赖项作为zip文件检索并将其解压缩到目录中。

但是,复制任务运行时,出现以下错误。我究竟做错了什么?Artifactory插件或gradle或...有问题吗?

该问题似乎与这是否是子项目无关。如果删除多项目配置并从子项目目录运行任务,则会收到相同的错误。

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\hoobajoob\project\subproject\package.gradle' line: 36

* What went wrong:
A problem occurred evaluating project ':subproject'.
> Could not resolve all dependencies for configuration ':subproject:runtimeDep'.
   > Cannot resolve external dependency company.com:artifact-id:1.0.0 because no repositories are defined.

这是subproject / package.gradle的内容(Artifactory url / user / password属性在该subproject的gradle.properties文件中):

plugins {
  id "com.jfrog.artifactory" version "4.2.0"
}

artifactory {
    contextUrl = "${artifactory_contextUrl}"
    resolve {
        repository {
          username = "${artifactory_user}"
          password = "${artifactory_password}"
          repoKey = 'some-repo'
        }
    }
}

configurations {
    runtimeDep
}

dependencies {
    runtimeDep 'company.com:artifact-id:1.0.0@zip'
}

ext.destination = null
task getDependencies(type: Copy) {
    from zipTree { configurations.runtimeDep.singleFile }
    into ".artifacts/runtime"
}

根项目构建脚本为空,但包装任务除外。以下是settings.gradle文件:

include 'subproject'
rootProject.children.each { project -> project.buildFileName = "package.gradle" }
胡巴乔布

尽管我的问题中的任务设置不同,但这似乎是与另一个SO问题中描述的症状相同

该问题似乎与Artifactory插件在gradle的执行阶段之前不会执行依赖项解析有关。我假设使用闭包定义任务zipTree步骤的参数getDependencies将具有将依赖关系解析推迟到该阶段的作用。

但是,要让复制任务推迟执行此操作,我需要将任务的from配置定义getDependencies为闭包,并zipTree在该闭包中包含该操作。

两者之间的区别在于:

from zipTree { configurations.runtimeDep.singleFile } // doesn't work

...和

from { zipTree( configurations.runtimeDep.singleFile ) } // works

进行此更改将使解析工作正常(没有必需的mavenrepositories块)。

另一个解决方案是完全放弃Artifactory配置(在这种情况下,我可以这样做,因为我不需要利用Artifactory特有的任何东西),并使用传统的gradlerepositories块,如另一个SO问题和crazyjavahacking所述这样做会使构建脚本更短,并且我可以保留zipTree步骤的配置,使其与最初编写时相同:

repositories {
   maven {
      url "${artifactory_contextUrl}/repo-key"
   }
}

configurations {
    runtimeDep
}

dependencies {
    runtimeDep 'company.com:artifact-id:1.0.0@zip'
}

ext.destination = null
task getDependencies(type: Copy) {
    from zipTree { configurations.runtimeDep.singleFile }
    into ".artifacts/runtime"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Gradle子项目中使用Gradle Artifactory插件

来自分类Dev

使用Gradle-Artifactory插件发布子项目

来自分类Dev

在 Gradle Release 插件的 buildTasks 中使用子项目任务

来自分类Dev

Gradle Artifactory插件-如何从项目中的多个模块发布工件?

来自分类Dev

Gradle插件可以修改多模块项目中的子项目列表吗?

来自分类Dev

Gradle在主项目中排除特定子项目的插件

来自分类Dev

Gradle Kotlin DSL:子项目和插件的问题

来自分类Dev

无法使Gradle签名插件与子项目一起使用

来自分类Dev

Gradle发行插件:将子项目中的文件添加到单独的文件夹中

来自分类Dev

如何将 Gradle 插件发布到 Artifactory?

来自分类Dev

使用Artifactory Gradle插件时无法使Spring Boot的buildInfo()工作

来自分类Dev

配置Gradle的Artifactory插件以发布发布或快照存储库

来自分类Dev

配置Gradle的Artifactory插件以发布发布或快照存储库

来自分类Dev

Flutter插件Gradle子项目未由外部应用程序项目解析

来自分类Dev

如何在插件自己的项目中使用SBT插件?

来自分类Dev

在项目的依赖项也使用相同插件的项目中使用gradle插件

来自分类Dev

仅在特定子项目上运行Gradle ShadowJar插件

来自分类Dev

如何避免将不相关的Maven插件添加到子项目中?

来自分类Dev

在子项目中使用Gradle包装器(./gradlew.sh)

来自分类Dev

在Gradle中的模块/子项目中使用AIDL接口

来自分类Dev

在同一项目中使用gradle war和ear插件是否可能/合理?

来自分类Dev

如何在Play 2.2中为子项目设置插件,例如scalajs?

来自分类Dev

如何在Intellij中使用Gradle构建OpenFire插件?

来自分类Dev

如何在标准环境中使用 Appengine Gradle 插件

来自分类Dev

如何使用drifferent gradle多项目的子项目

来自分类Dev

是否有用于定义Gradle-Artifactory插件配置的jenkins job-dsl块/代码?

来自分类Dev

Artifactory Gradle插件的解析封包中是否可以有多个存储库?

来自分类Dev

Gradle Artifactory插件失败,显示“无法将对象投射到ArtifactoryPluginConvention”

来自分类Dev

Gradle Artifactory插件失败,显示“无法将对象投射到ArtifactoryPluginConvention”

Related 相关文章

  1. 1

    如何在Gradle子项目中使用Gradle Artifactory插件

  2. 2

    使用Gradle-Artifactory插件发布子项目

  3. 3

    在 Gradle Release 插件的 buildTasks 中使用子项目任务

  4. 4

    Gradle Artifactory插件-如何从项目中的多个模块发布工件?

  5. 5

    Gradle插件可以修改多模块项目中的子项目列表吗?

  6. 6

    Gradle在主项目中排除特定子项目的插件

  7. 7

    Gradle Kotlin DSL:子项目和插件的问题

  8. 8

    无法使Gradle签名插件与子项目一起使用

  9. 9

    Gradle发行插件:将子项目中的文件添加到单独的文件夹中

  10. 10

    如何将 Gradle 插件发布到 Artifactory?

  11. 11

    使用Artifactory Gradle插件时无法使Spring Boot的buildInfo()工作

  12. 12

    配置Gradle的Artifactory插件以发布发布或快照存储库

  13. 13

    配置Gradle的Artifactory插件以发布发布或快照存储库

  14. 14

    Flutter插件Gradle子项目未由外部应用程序项目解析

  15. 15

    如何在插件自己的项目中使用SBT插件?

  16. 16

    在项目的依赖项也使用相同插件的项目中使用gradle插件

  17. 17

    仅在特定子项目上运行Gradle ShadowJar插件

  18. 18

    如何避免将不相关的Maven插件添加到子项目中?

  19. 19

    在子项目中使用Gradle包装器(./gradlew.sh)

  20. 20

    在Gradle中的模块/子项目中使用AIDL接口

  21. 21

    在同一项目中使用gradle war和ear插件是否可能/合理?

  22. 22

    如何在Play 2.2中为子项目设置插件,例如scalajs?

  23. 23

    如何在Intellij中使用Gradle构建OpenFire插件?

  24. 24

    如何在标准环境中使用 Appengine Gradle 插件

  25. 25

    如何使用drifferent gradle多项目的子项目

  26. 26

    是否有用于定义Gradle-Artifactory插件配置的jenkins job-dsl块/代码?

  27. 27

    Artifactory Gradle插件的解析封包中是否可以有多个存储库?

  28. 28

    Gradle Artifactory插件失败,显示“无法将对象投射到ArtifactoryPluginConvention”

  29. 29

    Gradle Artifactory插件失败,显示“无法将对象投射到ArtifactoryPluginConvention”

热门标签

归档