问题标签 [grails-2.2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
grails - BuildConfig.groovy Grails 2.2.3 中的自定义插件传递依赖解析
tl;博士版
我的自定义 grails 插件的依赖项没有被我安装插件的项目继承和解决。
- 将最新版本的发布插件安装到您的插件(修复 jar 依赖项的问题)
- 清除对您的 BuildConfig.groovy 文件中可能存在的插件的任何引用(修复插件依赖项的问题)
grails maven-install
使插件在 mavenLocal() 源中可用
长版
因此,我一直在尝试创建一个自定义 grails 插件以供我的大学内部使用。
如果将插件放入 BuildConfig.groovy 文件的 plugins 闭包中,我真的很喜欢它不仅会自动安装插件,而且会自动安装在其 BuildConfig.groovy 文件中为插件定义的所有依赖项(或者,在打包之后,它的 dependencies.groovy文件)。
查看说明,我已经在存储库关闭中为我的项目设置了 BuildConfig.groovy 文件:
然后将其添加到插件闭包中:
这确实正确安装了插件,但它不能解决任何插件的依赖项或所需的插件。这是插件的 BuildConfig.groovy 文件中的三个主要闭包:
如果我使用 运行插件grails run-app
,它可以很好地解决所有这些依赖项。只有当插件安装到项目中时,自动依赖解析才会失败。
我已经尝试使插件成为 maven 工件,并将其复制到我的本地存储库。在这些情况下,我flatDir
从闭包中删除了该行repositories
并将其替换为 mavenLocal()。同样,插件本身会安装,但指定的依赖项都不会安装。
我尝试将 BuildConfig.groovy 中的 legacyResolve 设置为 true,但这也无法安装 jars 或所需的插件(如 wslite)。
我什至尝试手动指定compile(":grails-my-plugin:0.1") {transitive: true}
,但它仍然无法解析插件。
在上述所有尝试之间,我卸载了我的插件,grails clean
在项目上运行,删除了 ~/.grails/2.2.3/cached-installed-plugins/ 目录的内容,并在吟诵 Burt 的圣名时倒了酒Beckwith,但我仍然无法获得传递分辨率。
另一件值得注意的事情:我已经对项目运行了依赖关系报告。它在依赖项中列出了我的插件,但报告说插件本身没有依赖项。
我还运行了 refresh-dependencies myAppDeps.xml 以获得依赖关系报告。它不包含插件的任何依赖项,这些依赖项也不是 vanilla grails 项目的依赖项。
公共存储库中的 Grails 插件会自动解析其依赖项(例如,尝试将 spring-security-ldap 放入 BuildConfig.groovy 文件中,然后安装 spring-security-core)。传递分辨率根本不适用于本地插件吗?有什么方法可以让它工作,比如在 _Install.groovy 中添加一些东西?
更新
所以,我尝试了 dmahapatro 的建议。这确实有助于在项目中安装 myPlugin 所依赖的 jar;因此,项目编译并且依赖报告包含所需的 jar。但是,myPlugin 所依赖的插件仍然没有安装到我安装 myPlugin 的项目中。当我在成功编译后尝试运行应用程序时,我收到此错误:
进一步更新
所以,我决定尝试隔离问题。我创建了一个新插件 ( grails create-plugin transitiveDep
) 和一个新项目 ( grails create-app horseradish
)。我将 BuildConfig.groovy 的相关部分从我的工作项目中复制到每个项目中,将插件依赖项从 my-plugin 更改为 transitive-dep。
瞧,辣根成功安装了所有需要的依赖项(wslite、springSecurityCore)。它甚至询问我是否想安装旧版本的 jQuery。
所以,我的环境没有任何问题。我怀疑此时插件的配置有其他问题。它最初是用 Grails 2.0.1 编写的,然后升级到 2.2.3。我也尝试将它安装到一个新的应用程序中,就像我安装了我的 transitive-dep 插件一样,但它仍然无法解决插件依赖项。当我弄清楚问题出在哪里时,我会发布更新。
最终更新
因此,阻止插件安装的原因是 myPlugin 在 application.properties 文件和BuildConfig.groovy 中引用了它们。如果我在打包之前删除了对它们的引用,则插件安装得很好。
我还注意到我的PluginGrailsPlugin.groovy 文件中仍然有旧的Grails 版本(2.0),以及似乎不再需要的dependsOn 映射。我删除/更改了这些行,但直到清除 application.properties 中的旧引用,事情才真正开始工作。
值得注意的是,在对 myPlugin 进行更改后,我还必须清除我的 ~/.grails/2.2.3、~/.grails/ivy-cache 文件夹和 ~/.m2/repository/org/grails/plugins/ 目录,或者我的项目仍会尝试安装旧版本。我厌倦了这样做,我制作了一个 shell 脚本来做到这一点:
mongodb - 使用 MongoDB 在 Grails 中命名查询的列表方法中排序不区分大小写
有没有办法指定命名查询中的列表不区分大小写?我认为在 grails 2.2 之前这是默认设置,但使用 Grails 2.2.3 无法正常工作......
这是我的代码行,它调用命名查询并尝试以不区分大小写的方式列出排序。
如您所见,我尝试添加 ignoreCase:true 选项,但它不起作用。而且我无法在命名查询中添加排序,因为我在其他需要不同排序选项的地方使用它。
以防万一,这是命名查询
编辑:对不起,我忘了提到我正在使用 MongoDB,我认为这是造成问题的人
grails - 未配置 javascript 提供程序
更新: 我已将此错误隔离到在此选择中注册 onchange 事件。如果我删除了 onchange,页面将无错误地呈现,否则我会收到No javascript provider错误。
由于各种原因,我想使用资源插件而不是 jQuery 插件来包含 jQuery。它大部分都在工作,但我有一个不会呈现的页面,而是发出错误No javascript provider is configured。
我的 ApplicationResources.groovy 定义了 jquery:
我的 main.gsp 布局如下所示:
发出未配置提供程序错误的页面如下所示:
spring - 没有这样的属性:org.codehaus.grails.INCLUDED_JS_LIBRARIES
要求
我正在尝试在基于功能测试阶段的自定义测试阶段运行我的 JavaScript 测试。基本上它需要:
- 启动嵌入式Tomcat
- 打开控制器
- 检查执行测试的结果
我做了什么
首先,我根据这篇文章创建了我的自定义测试阶段。所以我的 _Events.groovy 看起来像
接下来,我决定使用PhantomJS打开我的页面并分析执行的测试。所以我在RunJavaScriptUiTests.groovy脚本中使用了它
我可以看到functionalTestPhasePreparation运行,因为这会正确启动我的应用程序。我还可以看到 phantomjs 命令在打印时是正确的:
但这给了我groovy.lang.MissingPropertyException
有关完整的 Stacktrace,请参见此处。
有趣的是,如果我这样做
该脚本有效,我没有任何异常。
问题
为什么会抛出 MissingPropertyException?我查看了JavascriptLibraryFilters并没有找到原因。
编辑
关于 Tomcat
我正在使用 Grails 附带的嵌入式 Tomcat,但在 _Events.groovy 中启用压缩:
grails - flash.message 不在 grails 2.x 的屏幕上打印消息
我的功能是我有一个用户列表。当我点击任何用户编辑他的信息时,会弹出一个新窗口。我更改了一些值并单击保存。现在值已正确保存,但未显示“保存成功”消息。
我的控制器代码是
在 gsp 中我打印这样的消息
这里 Call 没有进入 g:if 条件,因此没有打印消息。这在 grails 1.3 中运行良好,但在 2.2 中失败。为什么呢?
grails - 如果在 grails 2.2.4 中调用私有方法后更改对象参数,则不会分配值
我有一个调用私有方法的方法。此方法返回模型。一旦它被返回,我改变一些对象值并渲染它。在 jsp 上,当我打印“消息”的值时,我没有得到该值。这是代码
私有方法
&普惠制
但是,如果我在返回之前在私有方法中为消息添加值,那么它的值将打印在 gsp 上。
这是在 gsp 中打印值的私有方法
这曾经在 grails 1.3.7 中运行良好,但为什么在 grails 2.2.4 中会发生这种情况
authentication - 如何在 Grails 中的身份验证控制器之外访问经过身份验证的用户?
我正在使用Authentication 2.0.1
spring 安全插件来验证我的 web 服务。我通过 Authentication Service 成功登录并设置用户会话。我还在身份验证控制器中获得sessionUser
并isLoggedIn
成功响应。但同样的事情我无法从其他控制器访问。请查看我的代码,除了身份验证控制器,我无法访问身份验证服务,请帮助。提前致谢。
javascript - When I use ckeditor toolbar, it adds html tags instead of adding desired effects while displaying
I am using ckeditor which was working fine when I used it with grails 1.3.7. Now I upadated my codebase to grails 2.2.4 & ckeditor is giving me some issue.
When I write someting & use toolbar to format it, I get output containing html tags. For e.g.
I select bold & write something 'This is a text' it produces output
Is there anything I should add in config to make it work?
grails - 在 Grails 中应用 Groovy 扩展会为 String#toBoolean() 产生 MissingMethodException
背景
Groovy 具有向现有类添加方法的功能,我发现了一些 有趣的方法。
然后我发现我需要自定义我的 Grails 引导程序来加载它们,所以我添加了:
我添加了我的 BuildConfig.groovy
问题
问题是现在我不能使用toBoolean()
Groovy String 的方法:
groovy.lang.MissingMethodException:没有方法签名:java.lang.String.toBoolean() 适用于参数类型:() 值:[] 可能的解决方案:asBoolean()、asBoolean()、toFloat()、toDouble()
既然 groovy 已经注册了,为什么缺少这个方法呢?我正在使用 Grails 2.2.4。
编辑
在 groovy 2.0.8 控制台中测试,代码有效,所以可能与 Grails 相关。
grails - 为什么有两种方法可以为 grails 配置插件?
我使用的一个 grails 应用程序有两种方法来包含插件:
首先在 application.properties 文件中:
在 BuildConfig.groovy 文件中:
数据库迁移插件在应用程序资源中是 1.1 版,而在 BuildConfig 中是 1.3.6 版,这似乎令人困惑。
为什么有两种方法可以为 grails 配置插件?