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 解释为插件,尽管它实际上不是插件的主要内容,如果未能解决你的问题,请参考以下文章
在 Atlassian Bamboo 中,我如何将我的脚本指向 Stash Repo 中的文件?
错误 310:暂存部署失败 - Cloud Foundry 中的 Grails 应用程序