Skip to content

Instantly share code, notes, and snippets.

@crykn
Last active March 11, 2022 17:31
Show Gist options
  • Save crykn/a0df3c6c5d6e1f5414a48bae2192d409 to your computer and use it in GitHub Desktop.
Save crykn/a0df3c6c5d6e1f5414a48bae2192d409 to your computer and use it in GitHub Desktop.
A proof of concept for automatically fetching the versions of libGDX's Gradle dependencies from an API endpoint.
buildscript {
apply from: 'gradle/libgdx-versions.gradle'
repositories {
mavenLocal()
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter()
google()
}
dependencies {
// NOTE: Do not place your application dependencies here; they belong
// in the individual project dependencies down below
classpath "org.wisepersist:gwt-gradle-plugin:$gwtPluginVersion"
classpath "org.gretty:gretty:3.0.2"
classpath "com.android.tools.build:gradle:$androidGradleToolsVersion"
classpath "com.mobidevelop.robovm:robovm-gradle-plugin:$roboVMPluginVersion"
}
}
allprojects {
apply plugin: "eclipse"
version = '1.0'
ext {
appName = "my-gdx-game"
box2DLightsVersion = '1.5'
ashleyVersion = '1.7.3'
aiVersion = '1.8.2'
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
google()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://oss.sonatype.org/content/repositories/releases/" }
}
}
project(":core") {
apply plugin: "java-library"
dependencies {
api "com.badlogicgames.gdx:gdx:$gdxVersion"
}
}
project(":desktop") {
apply plugin: "java-library"
dependencies {
implementation project(":core")
api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
}
}
project(":android") {
apply plugin: "com.android.application"
configurations { natives }
dependencies {
implementation project(":core")
api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
}
}
project(":ios") {
apply plugin: "java-library"
apply plugin: "robovm"
dependencies {
implementation project(":core")
api "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
api "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
api "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
}
}
project(":html") {
apply plugin: "java-library"
apply plugin: "gwt"
apply plugin: "war"
apply plugin: "org.gretty"
dependencies {
implementation project(":core")
api "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
api "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
api "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
}
}
import groovy.json.JsonSlurper
// Loads the local versions file
def versionFile = file('gradle/libgdx-versions.json')
def json
if (versionFile.exists()) {
json = new JsonSlurper().parseText(versionFile.text)
} else {
println "No local libGDX version definitions found; fetching them from libgdx.com"
ant.get(src: 'https://libgdx.com/service/versions.json', dest: 'gradle/libgdx-versions.json')
if (versionFile.exists()) {
json = new JsonSlurper().parseText(versionFile.text)
} else throw new GradleException("Unable to retrieve latest versions, please check your internet connection!")
}
ext {
gdxVersion = json.libgdxRelease
roboVMVersion = json.robovmVersion
roboVMPluginVersion = json.robovmPluginVersion
androidToolsVersion = json.androidBuildtoolsVersion
androidSDKVersion = json.androidSDKVersion
androidGradleToolsVersion = json.androidGradleToolVersion
gwtVersion = json.gwtVersion
gwtPluginVersion = json.gwtPluginVersion
}
task updateLibgdxVersions {
description 'Updates the local libGDX version definitions. Refresh your dependencies afterwards!'
doLast {
ant.get(src: 'https://libgdx.com/service/versions.json', dest: 'gradle/libgdx-versions.json')
def versionFile2 = file('gradle/libgdx-versions.json')
if (versionFile2.exists()) {
print "Local version definitions successfully updated. Refresh your dependencies!"
} else throw new GradleException("Unable to retrieve latest versions, please check your internet connection!")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment