Grails 将我的 repo 中的 zip 解释为插件,尽管它实际上不是插件

Posted

技术标签:

【中文标题】Grails 将我的 repo 中的 zip 解释为插件,尽管它实际上不是插件【英文标题】:Grails is interpreting a zip in my repo as a plugin, though it is not actually a plugin 【发布时间】:2012-02-25 10:28:03 【问题描述】:

我的 grails 项目(我构建的一个模块)的依赖项使用 maven-assembly-plugin 输出一个 zip 文件作为其构建过程的一部分(供 flex 应用程序使用)。这个 zip 输出到我的本地 mvn 存储库,与构建模块时输出的 jar 位于同一目录中,即

.m2/repository/com/mypackage/domain/1.0.0-SNAPSHOT/domain-1.0.0-SNAPSHOT.jar
.m2/repository/com/mypackage/domain/1.0.0-SNAPSHOT/domain-1.0.0-SNAPSHOT-generated-tos.zip

由于模块是我的 grails 项目中的(传递)依赖项,因此 jar 和 zip 都缓存在 ivy-cache 中

现在,当我尝试启动我的 grails 应用程序时,Grails 似乎正在从常春藤缓存中检测到这个 zip,并尝试将其作为插件安装,但由于明显的原因而失败......

| Loading Grails 2.0.0
| Configuring classpath.
| Environment set to development.....
| Error Zip ~/.grails/ivy-cache/com.mypackage/domain/zips/domain-1.0.0-SNAPSHOT-generated-tos.zip is not a valid plugin

有必要将 zip 构建到 repo,因为另一个模块使用 mvn-dependency-plugin 将其解压缩作为其构建过程的一部分。因此,我需要找到一种方法让 Grails 忽略它,因为它不是插件 zip。这可能吗?

【问题讨论】:

Jay,你解决过这个问题吗?我现在遇到了完全相同的问题。 抱歉,我早就应该回答这个问题了 - 我相信我设法配置了 maven-assembly-plugin 以将生成的 ActionScript 文件打包为 rar 而不是 zip,这解决了 Grails 的问题将其解释为插件。我现在已经有一段时间没有这样做了,所以我手头没有解决方案 - 抱歉。 【参考方案1】:

这是因为在 grails 中插件的打包默认是 zip,任何依赖于该格式的存档都将被视为插件。

尝试使 excludes 默认传递:

def excludes = 
    transitive = false

【讨论】:

【参考方案2】:

如果不对此进行测试,我会假设这完全与 BuildConfig.groovy 的配置有关。

你放在 dependencies 块中的东西应该按原样包含,而插件块中的东西被认为是插件 zip。

我在错误配置项目后偶然发现了这个问题。以下示例未经测试:)

dependencies 
     compile "my.project:artifact:0.1.0:zip"

plugins 
    compile "my.project:artifact:0.1.0" // Automatic found as a zip project

【讨论】:

以上是关于Grails 将我的 repo 中的 zip 解释为插件,尽管它实际上不是插件的主要内容,如果未能解决你的问题,请参考以下文章

Grails - 未安装 SCM 提供程序

在 Atlassian Bamboo 中,我如何将我的脚本指向 Stash Repo 中的文件?

Grails 插件中的自定义 CSS 和 JS

错误 310:暂存部署失败 - Cloud Foundry 中的 Grails 应用程序

Grails 3.0.2 无法解析控制器中的@Secured 注释

Grails Ajax 登录