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

时间:2012-02-02 18:32:36

标签: grails plugins dependencies

我的grails项目(我构建的模块)的依赖项使用maven-assembly-plugin输出一个zip文件作为其构建过程的一部分(供flex应用程序使用)。这个zip输出到我的本地mvn repo,在与构建模块输出的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都被缓存在常春藤缓存中

现在,当我尝试启动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。这可能吗?

2 个答案:

答案 0 :(得分:0)

这是因为在grails中,默认情况下插件的包装是zip,并且以该格式所依赖的任何存档都将被视为插件。

默认情况下尝试排除传递:

def excludes = {
    transitive = false
}

答案 1 :(得分:0)

如果不对此进行测试,我会认为这与 BuildConfig.groovy 的配置有关。

您在依赖项块中放置的内容应该按原样包含在内,而插件块中的内容则被视为插件zip。

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

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

}