【问题标题】:How do I force Gradle to get the most recent snapshot version of my package?如何强制 Gradle 获取我的包的最新快照版本?
【发布时间】:2020-11-04 09:43:34
【问题描述】:

我在 GitHub 包注册表上托管了一个 Maven 包。

每当我对包进行更新时,我都会运行mvn deploy 来发布更改,但如果我只是在依赖应用程序上运行gradle install,它似乎不会安装最新版本的包 (不确定settings.xml 是否与此问题相关,因此我将其删除,但可以在我上一个问题的链接中看到)。

我有一个similar issue,在另一个依赖项中使用包的最新快照版本,它使用 Maven 作为包管理器/构建工具而不是 Gradle。这是通过在 Maven 设置中选中“始终更新快照”框来解决的。我也勾选了这个项目中的复选框,但现在似乎无法解决问题。

我尝试过的:

  • 使缓存无效并重新启动 IntelliJ

  • 重新导入所有 gradle 项目

  • 从我的build.gradle 中删除依赖项,然后重新导入项目并安装,然后将其添加回来并重新导入所有项目并安装

  • 运行 ./gradlew build -x test --refresh-dependencies(测试因失败而被禁用)

这是我运行gradle install后的日志:

4:07:08 PM: Executing task 'install'...

> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :jar SKIPPED
> Task :install

BUILD SUCCESSFUL in 2s
3 actionable tasks: 1 executed, 2 up-to-date
4:07:10 PM: Task execution finished 'install'.

在我的 build.gradle 中,我对依赖项使用以下语法(在依赖项下):

compile('com.companyname:packagename:0.0.3-SNAPSHOT')

这就是我在存储库下的内容:

maven {
        url "https://maven.pkg.github.com/companyname/packagename"
        credentials {
            username "TaylorBurke"
            password "*****************"
        }
    }

不确定它是否相关,但是当我进入我的 Maven 设置以尝试更新存储库时,我收到此错误:

就是这样,我想我已经包含了所有内容。是 Maven、Gradle 还是 IntelliJ 的配置问题?

编辑:因为有人建议关闭这个问题我指出另一个问题的链接没有解决使用 Gradle 安装的问题,它只是解决了运行 mvn deploy 后的错误。我已经成功部署了新包,并且可以从我的其他应用程序中获取新版本。我的问题特定于gradle install。尽管接受的答案提到他在使用 Gradle 时遇到了类似的问题(但我的问题也不在于部署)他继续说快照版本将为所表达的问题提供解决方案,而且我已经在使用快照版本包裹。这个问题显然与我的问题完全不同。

【问题讨论】:

标签: gradle build.gradle


【解决方案1】:

您已经使用 IntelliJ 尝试了很多事情,但是当您从命令行运行构建时会出现问题 (./gradlew build)。这应该很好地表明问题不在于 IntelliJ。

默认情况下,Gradle 将缓存更改的依赖项(例如 SNAPHOST 依赖项)24 小时。在此期间,它不会向存储库询问更新的版本。因此,如果您以相同的名称发布新版本,Gradle 可能要再过一天才能看到它。

使用--refresh-dependencies 选项将使Gradle 忽略缓存,从而再次下载工件。

您还可以通过ResolutionStrategy 更改缓存保留期。如果愿意,您还可以将其配置为始终检查更改的依赖项。

在此处阅读有关动态依赖项的更多信息:https://docs.gradle.org/current/userguide/dynamic_versions.html


如果您好奇,Gradle 工件缓存默认位于$USER_HOME/.gradle/caches/modules-2/files-2.1(数字可能因您使用的 Gradle 版本而异)。此缓存与您在 IntelliJ 中提到的缓存无关。

此外,IntelliJ maven 存储库浏览器中的身份验证错误是因为您的凭据在 Gradle 配置中,而不是在 IntelliJ 中。所以这也和 Gradle 无关。

【讨论】:

  • 感谢您提供的信息,我现在对这个问题更加清楚了
猜你喜欢
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 2017-07-13
  • 2017-05-01
相关资源
最近更新 更多