Allow plugin dependencies to be optional (no Maven in Android Studio)
This commit is contained in:
@@ -22,9 +22,12 @@ fun Project.commonDep(coord: String): String {
|
|||||||
|
|
||||||
fun Project.commonDep(group: String, artifact: String): String = "$group:$artifact:${rootProject.extra["versions.$artifact"]}"
|
fun Project.commonDep(group: String, artifact: String): String = "$group:$artifact:${rootProject.extra["versions.$artifact"]}"
|
||||||
|
|
||||||
fun Project.preloadedDeps(vararg artifactBaseNames: String, baseDir: File = File(rootDir, "dependencies"), subdir: String? = null): ConfigurableFileCollection {
|
fun Project.preloadedDeps(vararg artifactBaseNames: String, baseDir: File = File(rootDir, "dependencies"), subdir: String? = null, optional: Boolean = false): ConfigurableFileCollection {
|
||||||
val dir = if (subdir != null) File(baseDir, subdir) else baseDir
|
val dir = if (subdir != null) File(baseDir, subdir) else baseDir
|
||||||
if (!dir.exists() || !dir.isDirectory) throw GradleException("Invalid base directory $dir")
|
if (!dir.exists() || !dir.isDirectory) {
|
||||||
|
if (optional) return files()
|
||||||
|
throw GradleException("Invalid base directory $dir")
|
||||||
|
}
|
||||||
val matchingFiles = dir.listFiles { file -> artifactBaseNames.any { file.matchMaybeVersionedArtifact(it) } }
|
val matchingFiles = dir.listFiles { file -> artifactBaseNames.any { file.matchMaybeVersionedArtifact(it) } }
|
||||||
if (matchingFiles == null || matchingFiles.size < artifactBaseNames.size)
|
if (matchingFiles == null || matchingFiles.size < artifactBaseNames.size)
|
||||||
throw GradleException("Not all matching artifacts '${artifactBaseNames.joinToString()}' found in the '$dir' (found: ${matchingFiles?.joinToString { it.name }})")
|
throw GradleException("Not all matching artifacts '${artifactBaseNames.joinToString()}' found in the '$dir' (found: ${matchingFiles?.joinToString { it.name }})")
|
||||||
@@ -37,8 +40,8 @@ fun Project.ideaUltimatePreloadedDeps(vararg artifactBaseNames: String, subdir:
|
|||||||
else files()
|
else files()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Project.ideaSdkDeps(vararg artifactBaseNames: String, subdir: String = "lib"): ConfigurableFileCollection =
|
fun Project.ideaSdkDeps(vararg artifactBaseNames: String, subdir: String = "lib", optional: Boolean = false): ConfigurableFileCollection =
|
||||||
preloadedDeps(*artifactBaseNames, baseDir = File(rootDir, "ideaSDK"), subdir = subdir)
|
preloadedDeps(*artifactBaseNames, baseDir = File(rootDir, "ideaSDK"), subdir = subdir, optional = optional)
|
||||||
|
|
||||||
fun Project.ideaUltimateSdkDeps(vararg artifactBaseNames: String, subdir: String = "lib"): ConfigurableFileCollection {
|
fun Project.ideaUltimateSdkDeps(vararg artifactBaseNames: String, subdir: String = "lib"): ConfigurableFileCollection {
|
||||||
val ultimateSdkDir = File(rootDir, "ultimate", "ideaSDK")
|
val ultimateSdkDir = File(rootDir, "ultimate", "ideaSDK")
|
||||||
@@ -50,8 +53,8 @@ fun Project.ideaSdkCoreDeps(vararg artifactBaseNames: String): ConfigurableFileC
|
|||||||
|
|
||||||
fun Project.ideaUltimateSdkCoreDeps(vararg artifactBaseNames: String): ConfigurableFileCollection = ideaUltimateSdkDeps(*artifactBaseNames, subdir = "core")
|
fun Project.ideaUltimateSdkCoreDeps(vararg artifactBaseNames: String): ConfigurableFileCollection = ideaUltimateSdkDeps(*artifactBaseNames, subdir = "core")
|
||||||
|
|
||||||
fun Project.ideaPluginDeps(vararg artifactBaseNames: String, plugin: String, subdir: String = "lib"): ConfigurableFileCollection =
|
fun Project.ideaPluginDeps(vararg artifactBaseNames: String, plugin: String, subdir: String = "lib", optional: Boolean = false): ConfigurableFileCollection =
|
||||||
ideaSdkDeps(*artifactBaseNames, subdir = "plugins/$plugin/$subdir")
|
ideaSdkDeps(*artifactBaseNames, subdir = "plugins/$plugin/$subdir", optional = optional)
|
||||||
|
|
||||||
fun Project.ideaUltimatePluginDeps(vararg artifactBaseNames: String, plugin: String, subdir: String = "lib"): ConfigurableFileCollection =
|
fun Project.ideaUltimatePluginDeps(vararg artifactBaseNames: String, plugin: String, subdir: String = "lib"): ConfigurableFileCollection =
|
||||||
ideaUltimateSdkDeps(*artifactBaseNames, subdir = "plugins/$plugin/$subdir")
|
ideaUltimateSdkDeps(*artifactBaseNames, subdir = "plugins/$plugin/$subdir")
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ dependencies {
|
|||||||
testRuntime(ideaPluginDeps("*.jar", plugin = "gradle"))
|
testRuntime(ideaPluginDeps("*.jar", plugin = "gradle"))
|
||||||
testRuntime(ideaPluginDeps("*.jar", plugin = "Groovy"))
|
testRuntime(ideaPluginDeps("*.jar", plugin = "Groovy"))
|
||||||
testRuntime(ideaPluginDeps("*.jar", plugin = "android"))
|
testRuntime(ideaPluginDeps("*.jar", plugin = "android"))
|
||||||
testRuntime(ideaPluginDeps("*.jar", plugin = "maven"))
|
testRuntime(ideaPluginDeps("*.jar", plugin = "maven", optional = true))
|
||||||
testRuntime(ideaPluginDeps("resources_en", plugin = "properties"))
|
testRuntime(ideaPluginDeps("resources_en", plugin = "properties"))
|
||||||
testRuntime(project(":idea:idea-android"))
|
testRuntime(project(":idea:idea-android"))
|
||||||
testRuntime(project(":idea:idea-gradle"))
|
testRuntime(project(":idea:idea-gradle"))
|
||||||
|
|||||||
Reference in New Issue
Block a user