IntelliJ
配置 IntelliJ 社区版以使用 Dapr 进行调试
开发 Dapr 应用程序时,你通常使用 Dapr CLI 来启动你的 Dapr 服务,就像这样:
dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 app.js
这将使用默认的组件yaml文件(在dapr init
时创建)以便您的服务能够与本地的Redis容器交互。 当你刚刚入门时这是好的开始,但是如果你想要附加一个debugger到你的服务并且通过VS Code进行单点调试呢? 在这里你可以使用 dapr cli 而不需要调用 app。
将调试器附加到您的服务中的一种方法是先从命令行中运行 dapr run --
,然后启动您的代码并附加调试器。 虽然这完全是一个可以接受的解决方案,但它也需要一些额外的步骤(比如在终端和IDE之间进行切换),以及对那些可能想要克隆你的仓库并点击 “play” 按钮开始调试的开发人员进行一些指导。
本文档介绍了如何从IntelliJ中直接使用dapr
。 作为前提条件,要确保你已经通过 dapr init
初始化了 Dapr 的开发环境。
让我们开始吧!
添加 Dapr 作为 “External Tool”
首先,退出 IntelliJ 后再修改配置文件。
IntelliJ 配置文件位置
对于2020.1及以上版本,工具的配置文件应位于以下位置:
%USERPROFILE%\AppData\Roaming\JetBrains\IntelliJIdea2020.1\tools\
$HOME/.config/JetBrains/IntelliJIdea2020.1/tools/
~/Library/Application\ Support/JetBrains/IntelliJIdea2020.1/tools/
2019.3或更早版本的配置文件位置不同, 详情请参阅 这里 获取更多详细信息。
如有需要,请在路径中更改 IntelliJ 版本。
创建或编辑文件在<CONFIG PATH>/tools/External\ Tools.xml
中(如有需要,请更改路径中的 IntelliJ 版本)。 如上所述,<CONFIG PATH>
是操作系统依赖的。
添加一个新的 <tool></tool>
条目:
<toolSet name="External Tools">
...
<!-- 1. Each tool has its own app-id, so create one per application to be debugged -->
<tool name="dapr for DemoService in examples" description="Dapr sidecar" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="true" showConsoleOnStdErr="true" synchronizeAfterRun="true">
<exec>
<!-- 2. For Linux or MacOS use: /usr/local/bin/dapr -->
<option name="COMMAND" value="C:\dapr\dapr.exe" />
<!-- 3. Choose app, http and grpc ports that do not conflict with other daprd command entries (placement address should not change). -->
<option name="PARAMETERS" value="run -app-id demoservice -app-port 3000 -dapr-http-port 3005 -dapr-grpc-port 52000" />
<!-- 4. Use the folder where the `components` folder is located -->
<option name="WORKING_DIRECTORY" value="C:/Code/dapr/java-sdk/examples" />
</exec>
</tool>
...
</toolSet>
(可选)您还可以为 sidecar 工具创建一个新条目,该条目可在许多项目中重复使用:
<toolSet name="External Tools">
...
<!-- 1. Reusable entry for apps with app port. -->
<tool name="dapr with app-port" description="Dapr sidecar" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="true" showConsoleOnStdErr="true" synchronizeAfterRun="true">
<exec>
<!-- 2. For Linux or MacOS use: /usr/local/bin/dapr -->
<option name="COMMAND" value="c:\dapr\dapr.exe" />
<!-- 3. Prompts user 4 times (in order): app id, app port, Dapr's http port, Dapr's grpc port. -->
<option name="PARAMETERS" value="run --app-id $Prompt$ --app-port $Prompt$ --dapr-http-port $Prompt$ --dapr-grpc-port $Prompt$" />
<!-- 4. Use the folder where the `components` folder is located -->
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
</exec>
</tool>
<!-- 1. Reusable entry for apps without app port. -->
<tool name="dapr without app-port" description="Dapr sidecar" showInMainMenu="false" showInEditor="false" showInProject="false" showInSearchPopup="false" disabled="false" useConsole="true" showConsoleOnStdOut="true" showConsoleOnStdErr="true" synchronizeAfterRun="true">
<exec>
<!-- 2. For Linux or MacOS use: /usr/local/bin/dapr -->
<option name="COMMAND" value="c:\dapr\dapr.exe" />
<!-- 3. Prompts user 3 times (in order): app id, Dapr's http port, Dapr's grpc port. -->
<option name="PARAMETERS" value="run --app-id $Prompt$ --dapr-http-port $Prompt$ --dapr-grpc-port $Prompt$" />
<!-- 4. Use the folder where the `components` folder is located -->
<option name="WORKING_DIRECTORY" value="$ProjectFileDir$" />
</exec>
</tool>
...
</toolSet>
创建或编辑运行配置
现在,为要调试的应用程序创建或编辑运行配置。 它可以在 main()
函数旁边的菜单中找到。
现在,添加程序参数和环境变量: 这些端口需要与上面 “External Tool” 条目中定义的端口相匹配。
- 本例的命令行参数:
-p 3000
- 本例的环境变量:
DAPR_HTTP_PORT=3005;DAPR_GRPC_PORT=52000
开始调试
以上一次性配置完成后,在 IntelliJ 中使用 Dapr 调试 Java 应用程序需要两个步骤:
- 通过
Tools
->External Tool
在 IntelliJ 中启动dapr
。
- 在调试模式下启动你的应用程序。
收尾
调试之后,确保你在 IntelliJ 中停止了 dapr
和你的应用。
注意:由于你使用 dapr run CLI 命令启动服务,所以 dapr list 命令将在当前使用 Dapr 运行的应用程序列表中显示 IntelliJ 的运行情况。
调试愉快!
相关链接
- 更改 IntelliJ 配置目录的位置