gantsign.intellij
Ansible 角色:IntelliJ
用于下载、安装和配置 IntelliJ IDEA IDE 的角色 https://www.jetbrains.com/idea。
虽然该角色可以安装 IntelliJ 插件,但如果您想有条件地安装特定插件,请查看我们的伴随角色:gantsign.intellij-plugins。
要求
Ansible Core >= 2.12
Linux 发行版
Debian 家族
Ubuntu
- Focal (20.04)
- Jammy (22.04)
RedHat 家族
Rocky Linux
- 9
注意:其他版本可能有效,但尚未测试。
Java JDK
- 需要安装 JDK 和 JDK 源代码。
- 使用 Java > 9 时,还需要安装 jmods。
例如,在 Rocky Linux 上使用 OpenJDK 17 时,需要以下配置:
- name: 安装 OpenJDK 17 become: true yum: name: - java-17-openjdk-devel - java-17-openjdk-jmods - java-17-openjdk-src state: presentApache Maven
角色变量
以下变量会改变该角色的行为(默认值如下所示):
# IntelliJ IDEA 版本号
intellij_version: '2024.2'
# 下载 IntelliJ IDEA redistributable 包的镜像地址
# 使用 HTTP 因为 https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'
# 要安装的版本(社区版或最终版)
intellij_edition: community
# IntelliJ IDEA 发行版的基础安装目录
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}
# 安装文件的所有者
intellij_install_user: root
# IntelliJ IDEA 项目的默认 Apache Maven 安装位置
# 默认值为 ansible_local.maven.general.home 的值(见 gantsign.maven 角色)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'
# IntelliJ IDEA 插件管理器网络服务的 URL
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'
# 要为 IntelliJ IDEA 配置的用户列表
users: []
# 存储 IntelliJ IDEA 安装所需下载文件的目录
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"
# IntelliJ IDEA 下载响应的超时时间(秒)
intellij_idea_download_timeout_seconds: 600
用户配置如下:
users:
- username: # Unix 用户名
intellij_group: # 用户文件/目录的 Unix 组(可选 - 默认为用户名)
intellij_jdks:
- name: # 此 JDK 使用的名称
home: # JDK 的路径
# 要作为新项目的默认 JDK
# 如果您指定了 `intellij_jdks`,则为必需
# 必须与 `intellij_jdks` 中的名称匹配
intellij_default_jdk:
intellij_disabled_plugins: # 见 ~/.config/JetBrains/*Idea*/disabled_plugins.txt
- # 插件 ID
intellij_codestyles:
# 代码风格的列表(每个 XML 位置可以通过 URL 或文件系统路径指定)
- name: # 名称(必须与 XML 文件 /code_scheme/@name 中的值匹配)
url: # 下载代码风格 XML 的 URL
- name: # 名称(必须与 XML 文件 /code_scheme/@name 中的值匹配)
src: # 代码风格 XML 文件的路径(可以是绝对路径或相对路径,相对路径的评估方式与 Ansible copy 模块相同)
remote_src: # yes/no,是否从远程文件系统复制(默认为 no)
intellij_default_codestyle: # 名称(必须与 XML 文件 /code_scheme/@name 中的值匹配)
intellij_inspection_profiles:
# 检查配置文件的列表(每个 XML 位置可以通过 URL 或文件系统路径指定)
- name: # 名称(必须与 XML 文件 /profile/option[@name='myName']/@value 中的值匹配)
url: # 下载检查配置文件 XML 的 URL
- name: # 名称(必须与 XML 文件 /profile/option[@name='myName']/@value 中的值匹配)
src: # 检查配置文件 XML 文件的路径(可以是绝对路径或相对路径,相对路径的评估方式与 Ansible copy 模块相同)
remote_src: # yes/no,是否从远程文件系统复制(默认为 no)
intellij_default_inspection_profile: # 名称(必须与 XML 文件 /profile/option[@name='myName']/@value 中的值匹配)
intellij_plugins:
- # 要安装的插件的插件 ID
# 仅限最终版:Ansible 主机上 IntelliJ 许可证密钥的位置
# 您的许可证密钥可以在 ~/.config/JetBrains/*Idea*/idea.key 中找到
intellij_license_key_path: # 例如 '/vagrant/idea.key'
警告: 安装附加插件的功能依赖于 IntelliJ IDEA 内部 API,暂时应视为实验性。
支持的 IntelliJ IDEA 版本
以下版本的 IntelliJ IDEA 在没有额外配置的情况下被支持(对于其他版本,请遵循高级配置说明):
2024.22024.1.42024.1.32024.1.22024.1.12024.12023.3.62023.3.52023.3.42023.3.32023.3.22023.3.12023.32023.2.52023.2.42023.2.32023.2.22023.2.12023.22023.1.52023.1.42023.1.32023.1.22023.1.12023.12022.3.32022.3.22022.3.12022.32022.2.42022.2.32022.2.22022.2.12022.22022.1.42022.1.32022.1.22022.1.12022.12021.3.32021.3.22021.3.12021.32021.2.32021.2.22021.2.12021.22021.1.32021.1.22021.1.12021.12020.3.32020.3.22020.3.12020.32020.2.42020.2.32020.2.22020.2.12020.22020.1.22020.1.12020.12019.3.42019.3.32019.3.22019.3.12019.32019.2.42019.2.32019.2.22019.2.12019.22019.1.32019.1.22019.1.12019.12018.3.62018.3.52018.3.42018.3.32018.3.22018.3.12018.32018.2.52018.2.42018.2.32018.2.22018.2.12018.22018.1.62018.1.52018.1.42018.1.32018.1.22018.1.12018.12017.3.52017.3.42017.3.32017.3.22017.3.12017.32017.2.62017.2.52017.2.42017.2.32017.2.22017.2.12017.22017.1.52017.1.42017.1.32017.1.22017.1.12017.12016.3.52016.3.42016.3.32016.3.22016.3.12016.32016.2.52016.2.42016.2.32016.2.22016.2.12016.22016.1.32016.1.1
高级配置
以下角色变量依赖于 IntelliJ IDEA 版本;要使用该角色未预配置的 IntelliJ IDEA 版本,您必须配置以下变量:
# redistributable 包的 SHA256 摘要
# 即 community 版本的 ideaIC-{{ intellij_version }}.tar.gz
# 或最终版本的 ideaIU-{{ intellij_version }}.tar.gz
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179
IntelliJ 插件 ID
JetBrains 不会在其市场网站上公开 IntelliJ 插件 ID (https://plugins.jetbrains.com/idea)。但通过一些 JavaScript 很容易获取到 ID。
在 JetBrains Marketplace 搜索您想安装的插件并导航到其概述页面 (例如:https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-)。
在浏览器地址栏中输入
javascript:(不要按回车)。注意:出于安全原因,您无法将
javascript:粘贴到地址栏(浏览器不会允许您这样做),您必须手动输入。在
javascript:后粘贴以下内容并按下回车:fetch(window.location.pathname.replace(/\/plugin\/(\d+).*/, "/api/plugins/$1")) .then((response) => response.json()) .then((data) => alert(`插件 ID: "${data.xmlId}"`));这段代码使用正则表达式修改 URL 的路径,并利用 fetch API 向 JetBrains 插件 REST API 发起请求。然后会显示一个弹窗,显示插件 ID (
xmlId来自 JSON 响应)。
示例剧本
最小剧本:
- hosts: servers
roles:
- role: gantsign.intellij
带有用户特定配置的剧本(默认 JDK、Maven、禁用插件和代码风格):
- hosts: servers
roles:
- role: gantsign.intellij
intellij_default_maven_home: '/opt/maven/apache-maven-3.9.4'
users:
- username: vagrant
intellij_jdks:
- name: '17'
home: '/usr/lib/jvm/java-17-openjdk-amd64'
- name: '11'
home: '/usr/lib/jvm/java-11-openjdk-amd64'
- name: '1.8'
home: '/usr/lib/jvm/java-8-openjdk-amd64'
intellij_default_jdk: '17'
intellij_disabled_plugins:
- org.jetbrains.plugins.gradle
- CVS
- com.intellij.uiDesigner
- org.jetbrains.android
- TestNG-J
- hg4idea
- Subversion
- AntSupport
- DevKit
intellij_codestyles:
- name: Example1
src: Example-style1.xml
- name: Example2
src: /example/Example-style2.xml
remote_src: true
- name: GoogleStyle
url: 'https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml'
intellij_default_codestyle: GoogleStyle
intellij_inspection_profiles:
- name: Example1
src: Example1.xml
- name: Example2
src: /example/Example2.xml
remote_src: true
- name: GantSign
url: 'https://raw.githubusercontent.com/gantsign/inspection-profile-intellij/master/GantSign.xml'
intellij_default_inspection_profile: GantSign
intellij_plugins:
- CheckStyle-IDEA
角色信息
该角色导出以下 Ansible 信息,供其他角色使用:
ansible_local.intellij.general.home- 例如:
/opt/idea/idea-community-2024.2
- 例如:
ansible_local.intellij.general.desktop_filename- 例如:
jetbrains-idea-ce.desktop
- 例如:
ansible_local.intellij.general.desktop_file- 例如:
/usr/share/applications/jetbrains-idea-ce.desktop
- 例如:
ansible_local.intellij.general.user_config_dir- 例如:
.config/JetBrains/IntelliJIdea2023.2
- 例如:
ansible_local.intellij.general.user_plugins_dir- 例如:
.local/share/JetBrains/IntelliJIdea2023.2
- 例如:
GantSign 的更多角色
您可以在 Ansible Galaxy 找到 GantSign 的更多角色。
开发与测试
该项目使用以下工具:
提供了一个 Visual Studio Code 的 Dev Container 来开发和测试此角色。
许可证
MIT
作者信息
约翰·弗里曼
GantSign 有限公司。 公司编号:06109112(在英格兰注册)
ansible-galaxy install gantsign.intellij