- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Gradle 作为我项目的构建工具。除了我的本地开发计算机之外,还有一个 Nexus 存储库管理器缓存来自 Maven Central(和其他)的包以及本地发布和 SNAPSHOT 构建,它们至少每天由 Jenkins CI 发布。
在 build.gradle
中,我有以下 repos 定义:
repositories {
mavenLocal()
maven { url http://url.to.nexus:8081/nexus/... }
flatDir {
...
}
}
该项目 (A
) 引用了几个内部库(例如 B
)——也在 SNAPSHOT 版本中。如果我构建 A
,则从 Nexus 获取 B
的引用快照版本,因为 mavenLocal
中没有版本并且 Jenkins 发布了所需的版本- 所以一切都很好。
如果我更改了 B
中的某些内容并想立即在 A
中使用,我会在本地构建/安装 B
(使用 gradle install
) 并且当前的 SNAPSHOT 进入 mavenLocal
使其可用于 A
的构建。但是从这一次开始,B
库总是从mavenLocal
获取。即使一段时间后同事更改了 B
并且 Nexus 上有更新的 SNAPSHOT 版本,它也不会被使用。
使用 Maven 可以指定一个 updatePolicy
像 daily
(这也是默认的)来解决这个问题。但我看不到如何在 Gradle 中执行此操作的方法(除了每天清除一次 ~/.m2/repository
)。
== 更新 ==
根据jlb的评论,补充一下:
我没有在 Maven 设置中定义任何存储库,因为依赖项解析和 Artifact 下载完全由 gradle 管理。所以所有的存储库都只在 Gradle 的构建脚本中定义。使用本地 Maven 存储库只是一种(通常推荐的)解决方法,以便在其他项目中使用本地(中间)构建的库,而无需每次都将它们发布到某个存储库管理器。 IMO 这在扩展库时是必不可少的(上面示例中的 B
)。
此外,这仅在存储库的顺序按上述定义时才有效。如果存储库中存在相同快照版本的 Artifact ,则不会检查进一步的存储库,即使那里可能有更新的(快照)构建可用。
最佳答案
Since SNAPSHOTs are a Maven concept, they aren't treated as anything special in an 'ivy' repository. Unfortunately, there's not (yet) any way to specify a custom pattern for a 'maven' repository, so you're a bit stuck.
The best way to tell Gradle to check for updated versions of a dependency is to flag the dependency as 'changing'. Gradle will then check for updates every 24 hours, but this can be configured using the resolutionStrategy DSL.
configurations.all {
// check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
dependencies {
compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}
关于maven - 如何使用 mavenLocal() 为 Gradle-build 指定 "updatepolicy",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35745475/
mavenLocal()目前可以通过在本地m2中搜索我的开发版本来满足我的需求。 还有其他方法可以告诉gradle在不更改build.gradle或其他源代码文件的情况下搜索本地m2吗? 最佳答案 您
我目前正在构建一个源 jar 和一个测试 jar。 apply plugin: 'java-library' apply plugin: 'maven' configurations { te
从头开始创建 Android 项目时,Android Studio 不会将 mavenLocal() 添加到 Gradle 存储库列表中。但我们添加了它,现在构建速度比以往任何时候都快。 是否有任何理
我依赖 spring-beans;4.0.0.RELEASE,我使用它安装到我的 mavenLocal 缓存中 mvn install:install-file -Dfile=/Users/jric/
实际上,我正在学习 build.gradle文件。在某些情况下,我知道他们有时会使用 mavenCentral() , jCenter()和 mavenLocal()在存储库部分。有时他们也使用 UR
在build.gradle中我有: repositories { mavenLocal() mavenCentral() } dependencies { compile 'com.tes
我设置了 gradle 构建脚本来解析已安装到本地 Maven 存储库的 TeraData 依赖项(此依赖项在 Maven Central 上不可用)。问题是当我执行gradle eclipse时,E
我正在尝试在 VMware VDI(虚拟桌面基础架构)上运行 Grails 3.0.6 应用程序。我想将我的 Maven 本地存储库定向到 /.m2/repository 以外的位置 我该怎么做? V
我正在尝试将工件发布到 ~/.m2(maven-local),作为 Gradle 新手,我不确定我缺少什么 到目前为止我看到的所有示例都建议使用 publishing block ,当我运行任何 Gr
我正在尝试将我的 Kotlin Gradle 项目的一部分提取到一个单独的存储库中。这是一个 Kotlin 多平台项目 ( https://github.com/krzema12/fsynth ),我
我有一些库 Gradle Java 项目,我目前正在使用 publishToMavenLocal 将它们发布到我的本地 Maven 存储库中。任务。我可以寻找一个名为 base 的库我本地的文件.m2
我有多模块项目,我正在使用 artifactory 来解析自定义库:build.gradle父项目: ... subporjects { ... apply plugin: "com.j
我正在使用 Gradle 作为我项目的构建工具。除了我的本地开发计算机之外,还有一个 Nexus 存储库管理器缓存来自 Maven Central(和其他)的包以及本地发布和 SNAPSHOT 构建,
我在一个 Java 项目上执行了 mvn clean install,我希望将其用作我的 Android 项目的一部分。 如果我使用 maven,我会这样做: com.abc.project
目标: i am intigrating aviary sdk to my existing android application i followed document frm link1 lin
我正在开发一个项目,我们用纯 Java 为端点/API 编写了单独的库。 为了包含这些库,我们使用公司设置,一个名为artifactory的网站,并在那里上传我们的 jar 。 当我们使用 gradl
我是一名优秀的程序员,十分优秀!