如何强制Gradle获取软件包的最新快照版本?

时间:2020-07-14 23:52:03

标签: gradle build.gradle

我有一个托管在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设置尝试更新存储库时,出现此错误:

authorization-exception

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

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

1 个答案:

答案 0 :(得分: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无关。