多个 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 RabbitMQ 插件、Java 、Spring AMQP - 多个客户端

具有多个 Active Directory 服务器的 Grails Spring Security LDAP 插件

如何从另一个 grails 插件配置 grails 插件

Grails 中的多个文件上传

声纳的 Groovy/Grails 插件

Grails:有条件地加载 Spring Security LDAP 插件