mirror of
				https://github.com/JetBrains/intellij-platform-plugin-template.git
				synced 2025-06-13 13:04:09 +00:00 
			
		
		
		
	build
This commit is contained in:
		
							parent
							
								
									d2e5c132bc
								
							
						
					
					
						commit
						3851ac47fb
					
				
							
								
								
									
										170
									
								
								build.gradle.kts
									
									
									
									
									
								
							
							
						
						
									
										170
									
								
								build.gradle.kts
									
									
									
									
									
								
							| @ -1,37 +1,108 @@ | |||||||
| import org.jetbrains.changelog.Changelog |  | ||||||
| import org.jetbrains.changelog.markdownToHTML | import org.jetbrains.changelog.markdownToHTML | ||||||
| import org.jetbrains.intellij.platform.gradle.TestFrameworkType | import org.jetbrains.intellij.platform.gradle.TestFrameworkType | ||||||
|  | import java.net.URI | ||||||
| 
 | 
 | ||||||
| plugins { | plugins { | ||||||
|  |     `maven-publish` | ||||||
|     id("java") // Java support |     id("java") // Java support | ||||||
|     alias(libs.plugins.kotlin) // Kotlin support |     alias(libs.plugins.kotlin) // IntelliJ Platform Gradle Plugin | ||||||
|     alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin |     alias(libs.plugins.intelliJPlatform) // IntelliJ Platform Gradle Plugin | ||||||
|     alias(libs.plugins.changelog) // Gradle Changelog Plugin |     alias(libs.plugins.changelog) // Gradle Changelog Plugin | ||||||
|     alias(libs.plugins.qodana) // Gradle Qodana Plugin |     alias(libs.plugins.qodana) // Gradle Qodana Plugin | ||||||
|     alias(libs.plugins.kover) // Gradle Kover Plugin |     alias(libs.plugins.kover) // Gradle Kover Plugin | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| group = providers.gradleProperty("pluginGroup").get() | group = providers.gradleProperty("pluginGroup").get() | ||||||
| version = providers.gradleProperty("pluginVersion").get() | version = providers.gradleProperty("pluginVersion").get() | ||||||
| 
 | 
 | ||||||
|  | // pawrequest custom github repo/dependency adder | ||||||
|  | val thisArtifactID = providers.gradleProperty("pluginRepositoryUrl").get().substringAfterLast("/") | ||||||
|  | val thisVendorName = providers.gradleProperty("pluginRepositoryUrl").get().substringBeforeLast("/").substringAfterLast("/") | ||||||
|  | //val theseCustomDependencies = providers.gradleProperty("customDependencies") | ||||||
|  | //    .orNull // Returns null if the property is missing | ||||||
|  | //    ?.split(",") // Split only if the property is present | ||||||
|  | //    ?: emptyList() // Provide an empty list if the property is missing | ||||||
|  | val theseCustomDependencies = providers.gradleProperty("customDependencies") | ||||||
|  |     .orNull // Returns null if the property is missing | ||||||
|  |     ?.split(",") // Split only if the property is present | ||||||
|  |     ?.filter { it.isNotBlank() } // Filter out empty strings | ||||||
|  |     ?: emptyList() // Provide an empty list if the property is missing | ||||||
|  | 
 | ||||||
|  | fun githubPackageUri(vendor: String = thisVendorName, artifactID: String = thisArtifactID): URI { | ||||||
|  |     return URI.create("https://maven.pkg.github.com/$vendor/$artifactID") | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fun addRepoUri(repositoryHandler: RepositoryHandler, uri: URI) { | ||||||
|  |     repositoryHandler.maven { | ||||||
|  |         url = uri | ||||||
|  |         name = "GitHubPackages" | ||||||
|  | 
 | ||||||
|  |         credentials { | ||||||
|  |             username = System.getenv("GITHUB_USERNAME") | ||||||
|  |             password = System.getenv("PUBLISH_TOKEN") | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | fun addCustomRepos(repositoryHandler: RepositoryHandler) { | ||||||
|  |     println("Custom Repos: $theseCustomDependencies") | ||||||
|  |     for (dep in theseCustomDependencies) { | ||||||
|  |         println("dep: $theseCustomDependencies") | ||||||
|  | 
 | ||||||
|  |         val depVals = dep.split(" ") | ||||||
|  |         val repoUri = githubPackageUri(depVals[0], depVals[1]) | ||||||
|  |         addRepoUri(repositoryHandler, repoUri) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | fun addCustomDependencies(dependencyHandler: DependencyHandler) { | ||||||
|  |     println("Custom Dependencies: $theseCustomDependencies") | ||||||
|  | 
 | ||||||
|  |     for (dep in theseCustomDependencies) { | ||||||
|  |         println("dep: $dep") | ||||||
|  | 
 | ||||||
|  |         val depVals = dep.split(" ") | ||||||
|  |         val imp = "${depVals[2]}:${depVals[1]}:${depVals[3]}" | ||||||
|  |         dependencyHandler.implementation(imp) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | fun addPublication(publicationContainer: PublicationContainer) { | ||||||
|  |     publicationContainer.create<MavenPublication>("mavenJava") { | ||||||
|  |         from(components["java"]) | ||||||
|  |         groupId = providers.gradleProperty("pluginGroup").get() | ||||||
|  |         artifactId = thisArtifactID | ||||||
|  |         version = providers.gradleProperty("pluginVersion").get() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // Set the JVM language level used to build the project. | // Set the JVM language level used to build the project. | ||||||
| kotlin { | kotlin { | ||||||
|     jvmToolchain(17) |     jvmToolchain(21) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Configure project's dependencies | // Configure project's dependencies | ||||||
| repositories { | repositories { | ||||||
|     mavenCentral() |     mavenCentral() | ||||||
| 
 |     addCustomRepos(this) | ||||||
|     // IntelliJ Platform Gradle Plugin Repositories Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-repositories-extension.html |  | ||||||
|     intellijPlatform { |     intellijPlatform { | ||||||
|         defaultRepositories() |         defaultRepositories() | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog | 
 | ||||||
|  | //// Dependencies are managed with Gradle version catalog - read more: https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog | ||||||
| dependencies { | dependencies { | ||||||
|     testImplementation(libs.junit) |     testImplementation(libs.junit) | ||||||
|  |     addCustomDependencies(this) | ||||||
| 
 | 
 | ||||||
|     // IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html |     // IntelliJ Platform Gradle Plugin Dependencies Extension - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-dependencies-extension.html | ||||||
|     intellijPlatform { |     intellijPlatform { | ||||||
| @ -43,13 +114,26 @@ dependencies { | |||||||
|         // Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace. |         // Plugin Dependencies. Uses `platformPlugins` property from the gradle.properties file for plugin from JetBrains Marketplace. | ||||||
|         plugins(providers.gradleProperty("platformPlugins").map { it.split(',') }) |         plugins(providers.gradleProperty("platformPlugins").map { it.split(',') }) | ||||||
| 
 | 
 | ||||||
|         instrumentationTools() | //        instrumentationTools() | ||||||
|         pluginVerifier() |         pluginVerifier() | ||||||
|         zipSigner() |         zipSigner() | ||||||
|         testFramework(TestFrameworkType.Platform) |         testFramework(TestFrameworkType.Platform) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | publishing { | ||||||
|  |     repositories { | ||||||
|  |         addRepoUri(this, githubPackageUri()) | ||||||
|  |     } | ||||||
|  |     publications { | ||||||
|  |         addPublication(this) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| // Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html | // Configure IntelliJ Platform Gradle Plugin - read more: https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-extension.html | ||||||
| intellijPlatform { | intellijPlatform { | ||||||
|     pluginConfiguration { |     pluginConfiguration { | ||||||
| @ -68,18 +152,6 @@ intellijPlatform { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         val changelog = project.changelog // local variable for configuration cache compatibility |  | ||||||
|         // Get the latest available change notes from the changelog file |  | ||||||
|         changeNotes = providers.gradleProperty("pluginVersion").map { pluginVersion -> |  | ||||||
|             with(changelog) { |  | ||||||
|                 renderItem( |  | ||||||
|                     (getOrNull(pluginVersion) ?: getUnreleased()) |  | ||||||
|                         .withHeader(false) |  | ||||||
|                         .withEmptySections(false), |  | ||||||
|                     Changelog.OutputType.HTML, |  | ||||||
|                 ) |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         ideaVersion { |         ideaVersion { | ||||||
|             sinceBuild = providers.gradleProperty("pluginSinceBuild") |             sinceBuild = providers.gradleProperty("pluginSinceBuild") | ||||||
| @ -87,20 +159,6 @@ intellijPlatform { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     signing { |  | ||||||
|         certificateChain = providers.environmentVariable("CERTIFICATE_CHAIN") |  | ||||||
|         privateKey = providers.environmentVariable("PRIVATE_KEY") |  | ||||||
|         password = providers.environmentVariable("PRIVATE_KEY_PASSWORD") |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     publishing { |  | ||||||
|         token = providers.environmentVariable("PUBLISH_TOKEN") |  | ||||||
|         // The pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3 |  | ||||||
|         // Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more: |  | ||||||
|         // https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel |  | ||||||
|         channels = providers.gradleProperty("pluginVersion").map { listOf(it.substringAfter('-', "").substringBefore('.').ifEmpty { "default" }) } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     pluginVerification { |     pluginVerification { | ||||||
|         ides { |         ides { | ||||||
|             recommended() |             recommended() | ||||||
| @ -108,50 +166,4 @@ intellijPlatform { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Configure Gradle Changelog Plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin |  | ||||||
| changelog { |  | ||||||
|     groups.empty() |  | ||||||
|     repositoryUrl = providers.gradleProperty("pluginRepositoryUrl") |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| // Configure Gradle Kover Plugin - read more: https://github.com/Kotlin/kotlinx-kover#configuration |  | ||||||
| kover { |  | ||||||
|     reports { |  | ||||||
|         total { |  | ||||||
|             xml { |  | ||||||
|                 onCheck = true |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| tasks { |  | ||||||
|     wrapper { |  | ||||||
|         gradleVersion = providers.gradleProperty("gradleVersion").get() |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     publishPlugin { |  | ||||||
|         dependsOn(patchChangelog) |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| intellijPlatformTesting { |  | ||||||
|     runIde { |  | ||||||
|         register("runIdeForUiTests") { |  | ||||||
|             task { |  | ||||||
|                 jvmArgumentProviders += CommandLineArgumentProvider { |  | ||||||
|                     listOf( |  | ||||||
|                         "-Drobot-server.port=8082", |  | ||||||
|                         "-Dide.mac.message.dialogs.as.sheets=false", |  | ||||||
|                         "-Djb.privacy.policy.text=<!--999.999-->", |  | ||||||
|                         "-Djb.consents.confirmation.enabled=false", |  | ||||||
|                     ) |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             plugins { |  | ||||||
|                 robotServerPlugin() |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user