【问题标题】:Grails and Local Maven DependenciesGrails 和本地 Maven 依赖项
【发布时间】:2023-03-12 07:10:02
【问题描述】:

我正在 Grails 中开发一个小型 Web 前端。它基本上是一个通过 JMS 异步连接的“超轻量级”客户端应用程序。

我想从 Maven 存储库中提取项目中有两个依赖项。它们是activemq 和acme-adapter-api,这是一个内部依赖项,在远程存储库中不可用。

我像这样设置我的BuildConfig.groovy (Grails 1.2M4) 文件,以便访问我的依赖项:

repositories {
    grailsPlugins()
    grailsHome()
    mavenCentral()
    mavenRepo('D:/maven-repo')
} dependencies {
    compile 'org.apache.activemq:apache-activemq:4.1.1'
    compile 'com.acme:acme-adapter-api:1.3-SNAPSHOT'
}

当我运行grails dependency-report 时,我可以看到与acme-adapter-api 有关的这一行,例如:

acme-adapter-api by com.acme  
108 kB (0 kB downloaded, 108 kB in cache)

当我尝试运行grails compile 时,我并不走运,因为它会抱怨它无法解析com.acme 组中的类。

有趣的是,activemq 依赖似乎不是问题...

不同的是,acme依赖不在mavenCentral(),而只在mavenRepo("D:/maven-repo")。所以我想:“也许它没有从本地磁盘中提取它......”并将版本更改为BuildConfig.groovy文件中不存在的一些有趣的(1.999-SNAPSHOT)值。再次运行grails compile时,命令超时,说找不到版本:

UNRESOLVED DEPENDENCIES
D:/maven-repo: unable to get resource for com/acme#acme-adapter-api;1.999-SNAPSHOT

很明显,本地依赖得到了解决,但不知何故没有应用于下一步,编译...

【问题讨论】:

    标签: grails build dependencies compilation grails-maven


    【解决方案1】:

    Grails 1.3.6 已使用 Ivy 2.2 进行了更新(这表明它对 https://issues.apache.org/jira/browse/IVY-938 进行了修复),如果我指定“changeing = true”,我可以获得对 SNAPSHOT 版本的更新,如下所示:

    dependencies {
      runtime ('groupId:artifactId:version-SNAPSHOT') {
        changing = true
      }
    }
    

    【讨论】:

      【解决方案2】:

      原来问题出在工件的非空缓存。虽然 activemq jar 文件没有受到影响,但实际上 acme-adapter-api.jar 已多次更改,但在上述情况下并未增加 maven build id 1.3。

      我可以修复它,当我将内部版本号增加到 1.4-SNAPSHOT...

      还有两个问题:

      1. 出于完全相同的原因,maven 合约是否总是获取 SNAPSHOT 版本?
      2. 如何强制清空缓存?它在哪里?

      我将打开一个新问题来回答第 2 部分 here

      【讨论】:

      • 我刚刚遇到了同样的问题。第一次后不会重新加载 SNAPSHOT 依赖项。这是开发过程中的一个大问题。 :/ Grrr。
      猜你喜欢
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2017-11-14
      • 2021-04-07
      • 1970-01-01
      相关资源
      最近更新 更多