maven - 解决快照的 gradle 缓存问题?
问题描述
将快照发布到 artifactory/mavenLocal 时,项目不会获取最新的快照。这需要从 ~/.gradle/cache 中删除 jar
Maven 具有为快照设置时间戳的功能。这将如何与 gradle 缓存一起使用?
解决方案
解决您的问题需要考虑两件事:
- Gradle 如何处理/识别快照
- 如何覆盖 Gradle 的默认行为
Gradle 如何识别/处理快照的一些背景知识
默认情况下,Gradle 将每 24 小时刷新一次快照依赖项。
-SNAPSHOT
如果版本以后缀结尾,Gradle 会自动将依赖项识别为快照。例如:
dependencies {
compile group: "aGroup", name: "anArtifact", version: "1.0-SNAPSHOT"
}
但是,如果依赖项的版本字符串不以-SNAPSHOT
Gradle 结尾,则需要告知它是带有changing
参数的快照。例如:
dependencies {
compile group: "aGroup", name: "anArtifact", version: "1.0", changing: true
}
覆盖 Gradle 下载快照的频率
覆盖默认 24 小时策略的唯一机制是将 Gradle 配置为更频繁地使依赖项缓存无效(并因此下载新的 SNAPSHOT)。例如:
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
动态版本依赖缓存需要单独配置
如果您使用任何动态版本,例如:
dependencies {
compile group: "aGroup", name: "anArtifact", version: "1.+", changing: true
}
您需要分别为这些依赖项配置缓存失效,如下所示:
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
}
建立绩效影响
需要注意的一件事是,缓存依赖项的时间越短,Gradle 检索该工件的频率就越高。如果完全禁用缓存,它将在每次执行期间获取依赖项。
推荐阅读
- r - 选择列是否包含文本?
- javascript - 向 GoogleAPI 发送身份验证代码时出现“redirect_uri_mismatch”
- loops - 不能在带有循环的异步代码中一次多次借用可变的
- logging - Blazemeter 中的设置和拆卸操作
- azure - 无法添加用于 Graph API 的公钥
- javascript - 如果使用 Sinon 使用错误的参数调用存根函数,则抛出错误
- python - 如何添加存储在模型中的唯一随机生成的 6 位密钥
- c - 比较 C 中的两个三角形(例如 3、3、4 和 4、3、3)
- python - 使用二分查找和用户输入
- javascript - while trying to fetch data,i get "Unhandled Rejection (TypeError): undefined is not iterable"