intellij grails 无法在 groovy 编译时解析外部库
intellij grails unable to resolve external library at groovy compile time
我正在编写一个简单的 etrade 程序化交易程序,需要使用 etrade oauth 进行身份验证。我将 IntelliJ Ultimate 与 Grails 3.1.9 一起使用。
我在 Project Settings->Libraries and Project Settings->Modules->main project(按 "command ;" 访问)添加了一个装满 jar 的文件夹,并选择了 "export." classes 在我的控制器 class 的 groovy 编辑器中解析得很好,但它们在 groovy 编译时没有解析。这是为什么?
~/IdeaProjects/<project name>/grails-app/controllers/etradescripter/ETradeUserController.groovy: 8: unable to resolve class com.etrade.etws.sdk.client.ClientRequest
@ line 8, column 1.
import com.etrade.etws.sdk.client.ClientRequest;
Grails 使用 Gradle 构建系统,它与 Maven 相当(更高级的恕我直言)。
它完全在 IDE 本身之外,不依赖于任何 IDE。
它是一个非常强大的外部构建工具,它有自己的工具、依赖管理、
库缓存和日志。
您在 Intellij 项目结构设置中声明的库和 SDK 用于 IntelliJ 内部支持(智能感知、代码辅助、反编译等)而不是用于构建 and/or 调试
项目的 gradle 工具支持(在 File/Settings/Gradle 中)可以是:
- a gradlew 项目中的声明:项目将使用它自己的
从规范中下载的构建系统版本
gradle/wrapper/gradle-wrapper.properties 文件以及随附的
gradle-wrapper.jar 下载器 - 这是推荐的方法 如果您对系统不满意,请避免
问题,但磁盘消耗而不是最快的构建。第一个构建
将有一个 gradle 二进制分发下载
- 与 Intellij 捆绑的 Gradle 版本(我认为是最后一个 IntelliJ 版本 2.13)
- 你可以在项目设置中声明一个(即你自己的Gradle安装根,你必须先安装它并设置正确
环境变量使其工作)对于最后一个它可以是
"daemon" 版本显着加快了速度,但非常 cpu 并且
大型项目的内存昂贵(准备 100% cpu 和
无论你有什么电脑,大型项目的内存消耗都很大。
用于声明构建和调试依赖项的构建的主文件是项目根目录中的“Build.gradle”文件。
依赖项用行声明(Groovy 语法,gradle 是一个 groovy 工具),例如:
dependencies {
assets "com.craigburke.angular:angular-template-asset-pipeline:2.2.6"
assets "com.craigburke.angular:angular-annotate-asset-pipeline:2.4.0"
assets "com.craigburke:js-closure-wrap-asset-pipeline:1.2.0"
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-autoconfigure"
等...
这是您必须添加自己的依赖项的地方,而不是在 IntelliJ SDK/lib 设置中。
这与具有不同语法 (groovy) 的 maven 系统相当。
对于来自外部仓库或本地依赖项的 jar,您应该会看到可以 copy/paste 和修改的行。
如果不看gradle docs
特别是 23.3 和 23.4,如何声明依赖关系。
gradle 目录 and/or 子项目目录中可以有其他 gradle 文件。这取决于你的项目。
要构建您的项目,您可以在 IntelliJ (View/Tool Windows/Gradle) 中打开 Gradle 工具 window,select 构建任务 (Task/build/build), 双击它,它将启动构建。
这将更改 IntelliJ IDE 中的 run/debug 配置,因此您可以通过单击 运行 按钮
使用 IDE 工具栏再次构建它
注意:运行 按钮 运行 是当前 selected gradle 任务,而不是应用程序,这在开始时有点混乱
为了 运行 或调试您的应用程序,您 select 适当的任务,如果是 Grails 任务,application/bootrun 并双击它。
这将启动您的应用程序(如果需要,在构建之后),如果它是 Web 应用程序,您可以在浏览器中浏览您的应用程序。
当您 运行 执行 运行 任务(不是构建任务)时,您还可以单击 'Debug' 图标来调试您的应用程序
如果您 select 另一个任务并单击调试,您将遇到套接字异常,因为 IntelliJ 认为您正在启动一个 jvm 并尝试连接到它进行调试。
(它们在 Gradle 中有很多预定义的任务:组装 jar、构建文档等......并且 运行 任务可能特定于项目
一般构建任务在构建类别下,运行任务在应用程序类别下)
我正在编写一个简单的 etrade 程序化交易程序,需要使用 etrade oauth 进行身份验证。我将 IntelliJ Ultimate 与 Grails 3.1.9 一起使用。
我在 Project Settings->Libraries and Project Settings->Modules->main project(按 "command ;" 访问)添加了一个装满 jar 的文件夹,并选择了 "export." classes 在我的控制器 class 的 groovy 编辑器中解析得很好,但它们在 groovy 编译时没有解析。这是为什么?
~/IdeaProjects/<project name>/grails-app/controllers/etradescripter/ETradeUserController.groovy: 8: unable to resolve class com.etrade.etws.sdk.client.ClientRequest
@ line 8, column 1.
import com.etrade.etws.sdk.client.ClientRequest;
Grails 使用 Gradle 构建系统,它与 Maven 相当(更高级的恕我直言)。 它完全在 IDE 本身之外,不依赖于任何 IDE。 它是一个非常强大的外部构建工具,它有自己的工具、依赖管理、 库缓存和日志。
您在 Intellij 项目结构设置中声明的库和 SDK 用于 IntelliJ 内部支持(智能感知、代码辅助、反编译等)而不是用于构建 and/or 调试
项目的 gradle 工具支持(在 File/Settings/Gradle 中)可以是:
- a gradlew 项目中的声明:项目将使用它自己的 从规范中下载的构建系统版本 gradle/wrapper/gradle-wrapper.properties 文件以及随附的 gradle-wrapper.jar 下载器 - 这是推荐的方法 如果您对系统不满意,请避免 问题,但磁盘消耗而不是最快的构建。第一个构建 将有一个 gradle 二进制分发下载
- 与 Intellij 捆绑的 Gradle 版本(我认为是最后一个 IntelliJ 版本 2.13)
- 你可以在项目设置中声明一个(即你自己的Gradle安装根,你必须先安装它并设置正确 环境变量使其工作)对于最后一个它可以是 "daemon" 版本显着加快了速度,但非常 cpu 并且 大型项目的内存昂贵(准备 100% cpu 和 无论你有什么电脑,大型项目的内存消耗都很大。
用于声明构建和调试依赖项的构建的主文件是项目根目录中的“Build.gradle”文件。
依赖项用行声明(Groovy 语法,gradle 是一个 groovy 工具),例如:
dependencies {
assets "com.craigburke.angular:angular-template-asset-pipeline:2.2.6"
assets "com.craigburke.angular:angular-annotate-asset-pipeline:2.4.0"
assets "com.craigburke:js-closure-wrap-asset-pipeline:1.2.0"
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-autoconfigure"
等...
这是您必须添加自己的依赖项的地方,而不是在 IntelliJ SDK/lib 设置中。 这与具有不同语法 (groovy) 的 maven 系统相当。
对于来自外部仓库或本地依赖项的 jar,您应该会看到可以 copy/paste 和修改的行。 如果不看gradle docs 特别是 23.3 和 23.4,如何声明依赖关系。
gradle 目录 and/or 子项目目录中可以有其他 gradle 文件。这取决于你的项目。
要构建您的项目,您可以在 IntelliJ (View/Tool Windows/Gradle) 中打开 Gradle 工具 window,select 构建任务 (Task/build/build), 双击它,它将启动构建。 这将更改 IntelliJ IDE 中的 run/debug 配置,因此您可以通过单击 运行 按钮
使用 IDE 工具栏再次构建它注意:运行 按钮 运行 是当前 selected gradle 任务,而不是应用程序,这在开始时有点混乱
为了 运行 或调试您的应用程序,您 select 适当的任务,如果是 Grails 任务,application/bootrun 并双击它。 这将启动您的应用程序(如果需要,在构建之后),如果它是 Web 应用程序,您可以在浏览器中浏览您的应用程序。
当您 运行 执行 运行 任务(不是构建任务)时,您还可以单击 'Debug' 图标来调试您的应用程序
如果您 select 另一个任务并单击调试,您将遇到套接字异常,因为 IntelliJ 认为您正在启动一个 jvm 并尝试连接到它进行调试。 (它们在 Gradle 中有很多预定义的任务:组装 jar、构建文档等......并且 运行 任务可能特定于项目
一般构建任务在构建类别下,运行任务在应用程序类别下)