多个 Grails 插件和类路径
Posted
技术标签:
【中文标题】多个 Grails 插件和类路径【英文标题】:Multiple Grails plugins and classpath
【发布时间】:2013-09-23 12:06:51
【问题描述】:
我正在尝试启动一个 Grails 应用程序,它由 多个插件 组成,每个插件都存储为单独的 Maven 模块。依赖关系在BuildConfig.groovy
文件中指定。启动存储在其他插件中的应用程序类(Java 和 Groovy)时不会加载。我检查了类路径,它似乎不包括其他插件生成的类。
BuildConfig.groovy
中的依赖项如下所示:
grails.project.class.dir = "目标/类"
grails.project.test.class.dir = "目标/测试类"
grails.project.test.reports.dir = "目标/测试报告"
grails.plugin.location.'plugin-one' = "$basedir/../plugin-one"
grails.plugin.location.'plugin-two' = "$basedir/../plugin-two"
grails.project.dependency.resolution =
继承(“全球”)
不包括 'commons-logging'、'commons-collections'
记录“警告”
存储库
继承假
mavenRepo "http://my.maven.repo"
插件
运行时':tomcat:1.3.7'
运行时':休眠:1.3.7'
...
依赖
编译“org.apache.httpcomponents:httpclient:4.2.1”
编译“org.apache.httpcomponents:httpmime:4.2.1”
编译“commons-collections:commons-collections:3.2.1”
构建“org.apache.httpcomponents:httpclient:4.2.1”
构建“org.apache.httpcomponents:httpmime:4.2.1”
构建“commons-collections:commons-collections:3.2.1”
...
gwt.version = "2.3.0"
Maven模块结构如下:
/pom.xml
/my-app/pom.xml
/plugin-one/pom.xml
/plugin-二/pom.xml
...
【问题讨论】:
“存储为单独的 Maven 模块” - 你能详细说明一下吗?您开发的应用程序是否也已 mavenized?
你能分享你的 BuildConfig.groovy 吗?
@dmahapatro - 我有一个 Maven 模块的扁平结构:my-app、plugin-one、plugin-two 等。虽然我很确定情况并非如此。
【参考方案1】:
grails 应用程序不将其类路径扩展到插件目录。相反,所有已编译的类都被复制到您的应用程序基目录包含的target/plugin-classes
目录中。
上一篇文章中描述的问题是由于Grails 不想将插件资源复制到应用程序类路径由于缺少Grails 插件的描述符。特别是plugin.xml
文件。不幸的是,Grails 文档对此保持沉默。但是,您可以通过在插件的基本目录中调用 grails package-plugin
命令为所有插件生成 plugin.xml
文件。如果您不希望 Grails 静默失败,请记住在对插件配置进行重大更改后重新生成插件描述符。
【讨论】:
以上是关于多个 Grails 插件和类路径的主要内容,如果未能解决你的问题,请参考以下文章
在 Grails 中跨多个插件共享身份验证
如何从另一个 grails 插件配置 grails 插件
Grails 中的多个文件上传
具有多个 Active Directory 服务器的 Grails Spring Security LDAP 插件
声纳的 Groovy/Grails 插件
Grails:有条件地加载 Spring Security LDAP 插件