main.name.remal.gradle_plugins.dsl.extensions.org.gradle.api.artifacts.ResolutionStrategy.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Remal Gradle plugins: gradle-plugins-kotlin-dsl
The newest version!
package name.remal.gradle_plugins.dsl.extensions
import name.remal.findCompatibleMethod
import name.remal.gradle_plugins.dsl.utils.DependencyNotation
import name.remal.gradle_plugins.dsl.utils.parseDependencyNotation
import org.gradle.api.Action
import org.gradle.api.artifacts.ResolutionStrategy
import java.util.concurrent.TimeUnit.DAYS
import java.util.concurrent.TimeUnit.SECONDS
fun ResolutionStrategy.selectHighestCapabilityVersion(group: String, module: String) {
val capabilitiesResolution = javaClass.findCompatibleMethod("getCapabilitiesResolution")
?.apply { isAccessible = true }
?.invoke(this)
?: return
capabilitiesResolution.invokeCompatibleMethod("withCapability", group, module, Action {
it.invokeCompatibleMethod("selectHighestVersion")
})
}
fun ResolutionStrategy.selectHighestCapabilityVersion(notation: Any) {
val dependencyNotation: DependencyNotation = if (notation is DependencyNotation) {
notation
} else {
parseDependencyNotation(notation.toString())
}
selectHighestCapabilityVersion(dependencyNotation.group, dependencyNotation.module)
}
fun ResolutionStrategy.cacheDynamicForever() {
cacheChangingModulesFor(30, DAYS)
cacheDynamicVersionsFor(30, DAYS)
}
fun ResolutionStrategy.disableCacheDynamic() {
cacheChangingModulesFor(0, SECONDS)
cacheDynamicVersionsFor(0, SECONDS)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy