配置Gradle项目
配置Gradle项目
概述
Gradle plugin 的源码是gradle-intellij-plugin ,插件提供了Gradle的task
Gradle plugin的配置文件是 build.gradle.kts 或者 build.gradle
Gradle plugin 的属性基本上都有默认值,满足基本需求
查看task详情,可以参考README ,需要注意以下几点:
插件的最新版本 ,建议更新该插件到最新版本
必需的Gradle版本
Gradle task ,本文档主要介绍下面几个:
设置环境和依赖的 Setup DSL
继承了gradle命令,运行插件 Running DSL
修改 plugin.xml(src/main/resources/META-INF/plugin.xml) 中的一些属性 patching-dsl
发布插件到 jetbrains插件市场 publishing-dsl
这里提供了一些开源的插件
配置Gradle plugin的功能
默认情况下,是用最新版本的 IntelliJ IDEA Community Edition 构建的Gradle plugin,如果自己本地 IntelliJ IDEA Community Edition和Gradle plugin不兼容,那么Gradle plugin会自动下载所对应的IntelliJ IDEA Community Edition版本和JetBrains Java Runtime.
IntelliJ Platform 配置 (build.gradle.kts)
设置Setup DSL的 intellij.version 和 intellij.type 2个属性,来指明创建项目所需要的 intellij版本和类型
intellij {
version.set("2021.2.4") //idea 版本
type.set("IC") // 可以不配置,默认值为 'IC'
// 'IC' - IntelliJ IDEA Community Edition.
// 'IU' - IntelliJ IDEA Ultimate Edition.
// 'CL' - CLion.
// 'PY' - PyCharm Professional Edition.
// 'PC' - PyCharm Community Edition.
// 'RD' - Rider.
// 'GO' - GoLand.
// 'JPS' - JPS-only.
}
如果你选择的intellij 版本在仓库 中没有,或者用的是本地版本 那么可以用属性 intellij.localPath来指定安装目录,如果指定了intellij.localPath,那么intellij.version 和 intellij.type就不需要指定
插件依赖
插件可能依赖第三方插件,那么第三方插件的版本需要和IntelliJ Platform的版本兼容.
Gradle plugin 会加载属性 intellij.plugins 中配置好的插件
intellij {
version.set("2021.2.4") //idea 版本
type.set("IC") // 可以不配置,默认值为 'IC'
// 'IC' - IntelliJ IDEA Community Edition.
// 'IU' - IntelliJ IDEA Ultimate Edition.
// 'CL' - CLion.
// 'PY' - PyCharm Professional Edition.
// 'PC' - PyCharm Community Edition.
// 'RD' - Rider.
// 'GO' - GoLand.
// 'JPS' - JPS-only.
plugins.add("java") // 依赖三方插件
plugins.add("yaml") // 依赖三方插件
}
注意,只是声明了依赖的第三方插件,还必须在项目中的 plugin.xml(src/main/resources/META-INF/plugin.xml) 文件里配置运行时依赖,详见文档
<depends>com.intellij.java</depends>
<depends>org.jetbrains.plugins.yaml</depends>
配置插件开发项目
默认情况下,Gradle plugin 会自动配置对应的IntelliJ Platform版本
PROJECT_ROOT/gradle/wrapper/gradle-wrapper.properties 可以控制gradle的版本
patching-dsl 可以修补 plugin.xml(src/main/resources/META-INF/plugin.xml) 中的一些属性
很多属性是有默认值的 例如:
如果没有明确定义patchPluginXml.sinceBuild 和 patchPluginXml.untilBuild 的值, 那么这两个属性的值和指定版本的idea(通过intellij.version属性指定)中的sinceBuild和untilBuild的保持一致
如果明确定义了patchPluginXml.sinceBuild 和 patchPluginXml.untilBuild 的值 ,那么这两个值将会替换plugin.xml 中设置的值
如果只设置了patchPluginXml.sinceBuild的值,没设置patchPluginXml.untilBuild 的值,那么 plugin.xml将使用设置的patchPluginXml.sinceBuild,和patchPluginXml.untilBuild的默认值
为了统一管理插件的配置,最好的方案是用build.gradle的属性替换plugin.xml中的属性,
例如,插件描述如果写在plugin.xml,如果需要html的元素,就需要用<![CDATA[]]>标签,配置在patchPluginXml,就不需要<![CDATA[]]>标签,
patchPluginXml 包含了很多属性,例如 修改内容(changeNotes)和 插件描述(pluginDescription)
提示
如果需要 changelog,那么可以使用 Gradle Changelog Plugin
为了保持版本一致,如果修改了build.gradle中的project.version,plugin.xml中的<version>也将自动更新