diff --git a/plugins/devkit/devkit-core/resources/assets/devkit-README.md b/plugins/devkit/devkit-core/resources/assets/devkit-README.md new file mode 100644 index 000000000000..07b2c63a48fa --- /dev/null +++ b/plugins/devkit/devkit-core/resources/assets/devkit-README.md @@ -0,0 +1,96 @@ +# IntelliJ Platform Plugin Template + +[![Twitter Follow](https://img.shields.io/badge/follow-%40JBPlatform-1DA1F2?logo=twitter)](https://twitter.com/JBPlatform) +[![Developers Forum](https://img.shields.io/badge/JetBrains%20Platform-Join-blue)][jb:forum] + +## Plugin template structure + +A generated project contains the following content structure: + +``` +. +├── .run/ Predefined Run/Debug Configurations +├── build/ Output build directory +├── gradle +│ ├── wrapper/ Gradle Wrapper +├── src Plugin sources +│ ├── main +│ │ ├── kotlin/ Kotlin production sources +│ │ └── resources/ Resources - plugin.xml, icons, messages +├── .gitignore Git ignoring rules +├── build.gradle.kts Gradle build configuration +├── gradle.properties Gradle configuration properties +├── gradlew *nix Gradle Wrapper script +├── gradlew.bat Windows Gradle Wrapper script +├── README.md README +└── settings.gradle.kts Gradle project settings +``` + +In addition to the configuration files, the most crucial part is the `src` directory, which contains our implementation and the manifest for our plugin – [plugin.xml][file:plugin.xml]. + +> [!NOTE] +> To use Java in your plugin, create the `/src/main/java` directory. + +## Plugin configuration file + +The plugin configuration file is a [plugin.xml][file:plugin.xml] file located in the `src/main/resources/META-INF` directory. +It provides general information about the plugin, its dependencies, extensions, and listeners. + +You can read more about this file in the [Plugin Configuration File][docs:plugin.xml] section of our documentation. + +If you're still not quite sure what this is all about, read our introduction: [What is the IntelliJ Platform?][docs:intro] + +$H$H Predefined Run/Debug configurations + +Within the default project structure, there is a `.run` directory provided containing predefined *Run/Debug configurations* that expose corresponding Gradle tasks: + +| Configuration name | Description | +|--------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Run Plugin | Runs [`:runIde`][gh:intellij-platform-gradle-plugin-runIde] IntelliJ Platform Gradle Plugin task. Use the *Debug* icon for plugin debugging. | +| Run Tests | Runs [`:test`][gradle:lifecycle-tasks] Gradle task. | +| Run Verifications | Runs [`:verifyPlugin`][gh:intellij-platform-gradle-plugin-verifyPlugin] IntelliJ Platform Gradle Plugin task to check the plugin compatibility against the specified IntelliJ IDEs. | + +> [!NOTE] +> You can find the logs from the running task in the `idea.log` tab. + +## Publishing the plugin + +> [!TIP] +> Make sure to follow all guidelines listed in [Publishing a Plugin][docs:publishing] to follow all recommended and required steps. + +Releasing a plugin to [JetBrains Marketplace](https://plugins.jetbrains.com) is a straightforward operation that uses the `publishPlugin` Gradle task provided by the [intellij-platform-gradle-plugin][gh:intellij-platform-gradle-plugin-docs]. + +You can also upload the plugin to the [JetBrains Plugin Repository](https://plugins.jetbrains.com/plugin/upload) manually via UI. + +## Useful links + +- [IntelliJ Platform SDK Plugin SDK][docs] +- [IntelliJ Platform Gradle Plugin Documentation][gh:intellij-platform-gradle-plugin-docs] +- [IntelliJ Platform Explorer][jb:ipe] +- [JetBrains Marketplace Quality Guidelines][jb:quality-guidelines] +- [IntelliJ Platform UI Guidelines][jb:ui-guidelines] +- [JetBrains Marketplace Paid Plugins][jb:paid-plugins] +- [IntelliJ SDK Code Samples][gh:code-samples] + +[docs]: https://plugins.jetbrains.com/docs/intellij +[docs:intro]: https://plugins.jetbrains.com/docs/intellij/intellij-platform.html?from=IJPluginTemplate +[docs:plugin.xml]: https://plugins.jetbrains.com/docs/intellij/plugin-configuration-file.html?from=IJPluginTemplate +[docs:publishing]: https://plugins.jetbrains.com/docs/intellij/publishing-plugin.html?from=IJPluginTemplate + +[file:plugin.xml]: ./src/main/resources/META-INF/plugin.xml + +[gh:code-samples]: https://github.com/JetBrains/intellij-sdk-code-samples +[gh:intellij-platform-gradle-plugin]: https://github.com/JetBrains/intellij-platform-gradle-plugin +[gh:intellij-platform-gradle-plugin-docs]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html +[gh:intellij-platform-gradle-plugin-runIde]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-tasks.html#runIde +[gh:intellij-platform-gradle-plugin-verifyPlugin]: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-tasks.html#verifyPlugin + +[gradle:lifecycle-tasks]: https://docs.gradle.org/current/userguide/java_plugin.html#lifecycle_tasks + +[jb:github]: https://github.com/JetBrains/.github/blob/main/profile/README.md +[jb:forum]: https://platform.jetbrains.com/ +[jb:quality-guidelines]: https://plugins.jetbrains.com/docs/marketplace/quality-guidelines.html +[jb:paid-plugins]: https://plugins.jetbrains.com/docs/marketplace/paid-plugins-marketplace.html +[jb:quality-guidelines]: https://plugins.jetbrains.com/docs/marketplace/quality-guidelines.html +[jb:ipe]: https://jb.gg/ipe +[jb:ui-guidelines]: https://jetbrains.github.io/ui \ No newline at end of file diff --git a/plugins/devkit/devkit-core/src/module/IdePluginModuleBuilder.kt b/plugins/devkit/devkit-core/src/module/IdePluginModuleBuilder.kt index bd3b827d250a..f9f73fa6e046 100644 --- a/plugins/devkit/devkit-core/src/module/IdePluginModuleBuilder.kt +++ b/plugins/devkit/devkit-core/src/module/IdePluginModuleBuilder.kt @@ -35,7 +35,6 @@ internal val DEVKIT_NEWLY_GENERATED_PROJECT: Key = Key.create("devkit.n internal class IdePluginModuleBuilder : StarterModuleBuilder() { - @Suppress("PrivatePropertyName") private val PLUGIN_TYPE_KEY: Key = Key.create("ide.plugin.type") override fun getBuilderId(): String = "idea-plugin" @@ -125,6 +124,8 @@ internal class IdePluginModuleBuilder : StarterModuleBuilder() { assets.add(GeneratorTemplateFile(standardAssetsProvider.gradleWrapperPropertiesLocation, ftManager.getJ2eeTemplate(DevKitFileTemplatesFactory.GRADLE_WRAPPER_PROPERTIES))) + assets.add(GeneratorResourceFile("README.md", javaClass.getResource("/assets/devkit-README.md")!!)) + assets.addAll(standardAssetsProvider.getGradlewAssets()) if (starterContext.isCreatingNewProject) { assets.addAll(standardAssetsProvider.getGradleIgnoreAssets())