在Grails 2.3.0中,当我运行maven-install时,我的插件所依赖的插件没有被导出。这适用于2.2.3:
$ which grails
/Applications/grails-2.2.4/bin/grails
$ grails create-plugin myplugin
| Created plugin Myplugin
# add spring-security-core
$ cd myplugin; cat grails-app/conf/BuildConfig.groovy
...
plugins {
build(":tomcat:$grailsVersion",
":release:2.2.1",
":rest-client-builder:1.0.3") {
export = false
}
compile ":spring-security-core:1.2.7.3"
}
$ grails compile; grails maven-install
$ cat target/pom.xml|grep spring
<artifactId>spring-security-core</artifactId>
$ cat ~/.m2/repository/org/grails/plugins/myplugin/0.1/myplugin-0.1.pom|grep spring
<artifactId>spring-security-core</artifactId>
但不是2.3.0
$ which grails
/Applications/grails-2.3.0/bin/grails
$ grails create-plugin mynewplugin
| Created plugin Mynewplugin
# add spring-security-core
$ cd mynewplugin; cat grails-app/conf/BuildConfig.groovy
...
plugins {
build(":release:3.0.0",
":rest-client-builder:1.0.3") {
export = false
}
compile ":spring-security-core:1.2.7.3"
}
$ grails compile; grails maven-install
$ cat target/pom.xml|grep spring
$ cat ~/.m2/repository/org/grails/plugins/mynewplugin/0.1/mynewplugin-0.1.pom|grep spring
$
我的application.properties没有列出依赖项。我也尝试过从源代码构建的Grails 2.3.1,但它的行为与2.3.0相同。目标是能够拥有一个依赖于其他插件的插件,并将这些依赖项导出到主应用程序,而主应用程序不必显式声明它们。这应该是可能的,如果是的话,我错过了什么?我已经阅读了很多其他相关的stackoverflow答案和Grails邮件列表,但没有任何事情可以解决这个问题。
答案 0 :(得分:1)
我在升级项目时使用Grails 2.3时也发现了这个问题。到目前为止,尚未发现原因,因为在某些情况下,生成的pom确实包含一些依赖项,但在大多数情况下并非全部。然而,我发现了一项似乎可以构建所有内容的工作:
use pom
,以及grails.project.dependency.resolver = "maven"
,checksums true
和legacyResolve false
将依赖关系从BuildConfig.groovy移动到pom。插件的依赖关系定义(任何构建插件,我已经在Maven下提供了一次提供的范围):
<dependency>
<groupId>org.grails.plugins</groupId>
<artifactId>spring-security-core</artifactId>
<version>1.2.7.3</version>
<type>zip</type>
</dependency>
对于依赖关系块中的条目:
<dependency>
<groupId>some.group</groupId>
<artifactId>artifact</artifactId>
<version>1.0.0</version>
</dependency>
执行grails maven-install
或grails maven-deploy
现在应该使用该pom并正常工作。我们已经使用父pom以及全局settings.groovy中的一些开关来实现这一点,希望(在编写本文时未经测试)允许我们进行内联。
答案 1 :(得分:1)
对于任何挣扎于此的人来说,它在发布插件版本3.0.0中被证明是一个错误或遗漏。它已在3.0.1中修复,因此将其添加到BuildConfig.groovy并重新运行maven-install可以解决问题:
build(":release:3.0.1",...