我在一个 grails 项目中安装了 spring-security-core,但由于某种原因,IDEA 没有自动获取 jar 文件。我可以很好地使用 grails 命令行部署应用程序并运行测试......但 IDEA 仍然会使用波浪线。有没有办法让IDEA在我安装插件后自动拾取jar?
5 回答
我不是 100% 这个问题的真正根源是什么。据我所知,IntelliJ 会解析插件内部的 BuildConfig.groovy 来配置依赖项。看来,它没有拾取自动生成的 dependencies.groovy。打包的 spring-security-core 插件只包含一个 dependencies.groovy,没有 BuildConfig.groovy。
我已将以下代码段添加到我的应用程序的 BuildConfig.groovy
dependencies {
compile('org.springframework.security:org.springframework.security.core:3.0.2.RELEASE') {
excludes 'com.springsource.org.aopalliance',
'com.springsource.org.apache.commons.logging',
'org.springframework.beans',
'org.springframework.context',
'org.springframework.core'
}
compile('org.springframework.security:org.springframework.security.web:3.0.2.RELEASE') {
excludes 'com.springsource.javax.servlet',
'com.springsource.org.aopalliance',
'com.springsource.org.apache.commons.logging',
'org.springframework.aop',
'org.springframework.beans',
'org.springframework.context',
'org.springframework.core',
'org.springframework.web'
}
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
// runtime 'mysql:mysql-connector-java:5.1.5'
}
有了这个,IntelliJ “知道” Spring Security jars。
我的问题(9.0.2)是 grailsPlugins 的类路径上没有 grails 库。所以编译依赖项不起作用,你的修复 fabien 有点冗长:-)
IDEA 通常有一个很好的自动错误修复 (alt + enter) 并且在这种情况下它可以工作。它会要求您“将 grails 用户库添加到类路径”。像魅力一样工作,但应该没有必要
- 打开项目结构窗口
- 在项目设置中选择模块
- 然后选择插件模块。它应该被命名为“myproject-grailsPlugin”
- 然后选择选项卡依赖项
- 在依赖模块中,选择 Grails User Library(如果不存在,使用 Add -> Global Library 创建)
- 编辑这个库并在配置模块库对话框中,选择“附加 JAR 目录”
- 选择spring-security-code插件的lib目录。O windows 它应该位于:C:\Users\myuser.grails\1.3.1\projects\myproject\plugins\spring-security-core-0.3.1\lib
就是这样 !
为什么不直接右键单击您的项目根目录并单击“同步 grails 依赖项”...
当您将插件目录更改为 BuildConfig.groovy 中默认目录以外的其他目录时,似乎 intellij 9.0.3 无法正确地从插件中获取依赖项
grails.project.plugins.dir = "./plugins" //breaks plug-ins in intellij
更改插件目录后开始出现找不到类错误。我添加了模块中的依赖项(即 spring-security-core 和 springcache),现在 intellij 将 jar 依赖项添加到“Grails 用户库”中,我可以编译我的应用程序。使用命令行从来没有任何问题。
这是我为 springcache 添加到 BuildConfig 中的内容。
dependencies {
//for spring-security-core
// 对于 springcache compile("net.sf.ehcache:ehcache-web:2.0.0") { excludes "ehcache-core" // ehcache-core 由 Grails 提供 }
}