Code polish, fixed warnings/deprecations. Updated default kotlin version when none is detected.
This commit is contained in:
parent
74335d50e3
commit
42f0344b62
@ -41,6 +41,8 @@ import kotlin.reflect.full.declaredMemberProperties
|
|||||||
@Suppress("unused", "MemberVisibilityCanBePrivate", "ObjectLiteralToLambda")
|
@Suppress("unused", "MemberVisibilityCanBePrivate", "ObjectLiteralToLambda")
|
||||||
open class StaticMethodsAndTools(private val project: Project) {
|
open class StaticMethodsAndTools(private val project: Project) {
|
||||||
companion object {
|
companion object {
|
||||||
|
const val defaultKotlinVersion = "1.6.10"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the kotlin plugin is applied, and there is a compileKotlin task.. Then kotlin is enabled
|
* If the kotlin plugin is applied, and there is a compileKotlin task.. Then kotlin is enabled
|
||||||
* NOTE: This can ONLY be called from a task, it cannot be called globally!
|
* NOTE: This can ONLY be called from a task, it cannot be called globally!
|
||||||
@ -177,16 +179,17 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
}}
|
}}
|
||||||
|
|
||||||
// assign target fields to our project (if our project has matching setters)
|
// assign target fields to our project (if our project has matching setters)
|
||||||
assignedExtraProperties.forEach {
|
assignedExtraProperties.forEach { prop ->
|
||||||
val propertyName = it.name
|
val propertyName = prop.name
|
||||||
val setterName = "set${propertyName.replaceFirstChar { it.titlecaseChar() }}"
|
val setterName = "set${propertyName.replaceFirstChar { it.titlecaseChar() }}"
|
||||||
|
|
||||||
val projectMethod = propertyFunctions.find { prop -> prop.name == setterName }
|
val projectMethod = propertyFunctions.find { it.name == setterName }
|
||||||
if (projectMethod != null) {
|
if (projectMethod != null) {
|
||||||
if (it.getter.property.isConst) {
|
val getter = prop.getter
|
||||||
projectMethod.call(project, it.getter.call())
|
if (getter.property.isConst) {
|
||||||
|
projectMethod.call(project, getter.call())
|
||||||
} else {
|
} else {
|
||||||
projectMethod.call(project, it.getter.call(kClass.objectInstance))
|
projectMethod.call(project, getter.call(kClass.objectInstance))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -221,7 +224,10 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
*/
|
*/
|
||||||
fun getProjectRepositoryUrls(project: Project = this.project, onlyRemote: Boolean = true): List<String> {
|
fun getProjectRepositoryUrls(project: Project = this.project, onlyRemote: Boolean = true): List<String> {
|
||||||
val repositories = mutableListOf<String>()
|
val repositories = mutableListOf<String>()
|
||||||
project.repositories.filterIsInstance<org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository>().forEach { repo ->
|
val instance = project.repositories.filterIsInstance<org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository>()
|
||||||
|
|
||||||
|
@Suppress("DuplicatedCode")
|
||||||
|
instance.forEach { repo ->
|
||||||
val resolver = repo.createResolver()
|
val resolver = repo.createResolver()
|
||||||
if (resolver is org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver) {
|
if (resolver is org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver) {
|
||||||
// println("searching ${resolver.name}")
|
// println("searching ${resolver.name}")
|
||||||
@ -240,7 +246,7 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
// the root doesn't always end with a '/', and we must guarantee that
|
// the root doesn't always end with a '/', and we must guarantee that
|
||||||
repositories.add("$toURL/")
|
repositories.add("$toURL/")
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (ignored: Exception) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -256,9 +262,10 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
*/
|
*/
|
||||||
fun getProjectBuildScriptRepositoryUrls(project: Project = this.project, onlyRemote: Boolean = true): List<String> {
|
fun getProjectBuildScriptRepositoryUrls(project: Project = this.project, onlyRemote: Boolean = true): List<String> {
|
||||||
val repositories = mutableListOf<String>()
|
val repositories = mutableListOf<String>()
|
||||||
project.buildscript.repositories.filterIsInstance<org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository>()
|
val instance = project.buildscript.repositories.filterIsInstance<org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository>()
|
||||||
.forEach {
|
|
||||||
repo ->
|
@Suppress("DuplicatedCode")
|
||||||
|
instance.forEach { repo ->
|
||||||
val resolver = repo.createResolver()
|
val resolver = repo.createResolver()
|
||||||
if (resolver is org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver) {
|
if (resolver is org.gradle.api.internal.artifacts.repositories.resolver.MavenResolver) {
|
||||||
// println("searching ${resolver.name}")
|
// println("searching ${resolver.name}")
|
||||||
@ -277,7 +284,7 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
// the root doesn't always end with a '/', and we must guarantee that
|
// the root doesn't always end with a '/', and we must guarantee that
|
||||||
repositories.add("$toURL/")
|
repositories.add("$toURL/")
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (ignored: Exception) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -515,7 +522,6 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
kotlinActions: KotlinJvmOptions.() -> Unit = {}) {
|
kotlinActions: KotlinJvmOptions.() -> Unit = {}) {
|
||||||
val javaVer = javaVersion.toString()
|
val javaVer = javaVersion.toString()
|
||||||
val kotlinJavaVer = kotlinJavaVersion.toString()
|
val kotlinJavaVer = kotlinJavaVersion.toString()
|
||||||
val defaultKotlinVersion = "1.5.21"
|
|
||||||
|
|
||||||
val kotlinVer: String = try {
|
val kotlinVer: String = try {
|
||||||
if (hasKotlin) {
|
if (hasKotlin) {
|
||||||
@ -620,7 +626,7 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
// org.eclipse.swt.gtk.linux.x86
|
// org.eclipse.swt.gtk.linux.x86
|
||||||
// org.eclipse.swt.gtk.linux.x86_64
|
// org.eclipse.swt.gtk.linux.x86_64
|
||||||
|
|
||||||
// macoxs
|
// macos
|
||||||
// org.eclipse.swt.cocoa.macosx.x86_64
|
// org.eclipse.swt.cocoa.macosx.x86_64
|
||||||
|
|
||||||
val currentOS = org.gradle.internal.os.OperatingSystem.current()
|
val currentOS = org.gradle.internal.os.OperatingSystem.current()
|
||||||
@ -644,12 +650,12 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
fixedSWT = true
|
fixedSWT = true
|
||||||
|
|
||||||
project.configurations.all { config ->
|
project.configurations.all { config ->
|
||||||
config.resolutionStrategy { strat ->
|
config.resolutionStrategy { strategy ->
|
||||||
strat.dependencySubstitution { sub ->
|
strategy.dependencySubstitution { sub ->
|
||||||
// The maven property ${osgi.platform} is not handled by Gradle for the SWT builds
|
// The maven property ${osgi.platform} is not handled by Gradle for the SWT builds
|
||||||
// so we replace the dependency, using the osgi platform from the project settings
|
// so we replace the dependency, using the osgi platform from the project settings
|
||||||
sub.substitute(sub.module("org.eclipse.platform:org.eclipse.swt.\${osgi.platform}"))
|
sub.substitute(sub.module("org.eclipse.platform:org.eclipse.swt.\${osgi.platform}"))
|
||||||
.with(sub.module(fullId))
|
.using(sub.module(fullId))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -674,26 +680,6 @@ open class StaticMethodsAndTools(private val project: Project) {
|
|||||||
return javaX
|
return javaX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Should gradle try to infer that this project is a JPMS module by analysing JARs and the classpath?
|
|
||||||
*
|
|
||||||
* Only possible for gradle >= 6.4
|
|
||||||
*/
|
|
||||||
fun inferJpmsModule() {
|
|
||||||
if (GradleVersion.current() >= GradleVersion.version("6.4")) {
|
|
||||||
project.gradle.taskGraph.whenReady {
|
|
||||||
// NOTE: these must be anonymous inner classes because gradle cannot handle this in kotlin 1.5
|
|
||||||
project.convention.configure(JavaPluginExtension::class.java, object: Action<JavaPluginExtension> {
|
|
||||||
override fun execute(task: JavaPluginExtension) {
|
|
||||||
// Should a --module-path be inferred by analysing JARs and class folders on the classpath?
|
|
||||||
task.modularity.inferModulePath.set(true)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fix issues where code (usually test code) needs access to **INTERNAL** scope objects.
|
* Fix issues where code (usually test code) needs access to **INTERNAL** scope objects.
|
||||||
* -- at the moment, this only fixes gradle -- not intellij
|
* -- at the moment, this only fixes gradle -- not intellij
|
||||||
|
Loading…
Reference in New Issue
Block a user