Skip to content

Commit a3248e7

Browse files
committed
update gradle to 8.4. Migrate to new publishing flow, allowing for snapshots and release using actions
1 parent d3a0c8d commit a3248e7

File tree

7 files changed

+174
-114
lines changed

7 files changed

+174
-114
lines changed

.github/workflows/main.yaml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Build and deploy
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
release:
7+
types: [ published ]
8+
9+
env:
10+
GRADLE_USER_HOME: .gradle
11+
12+
jobs:
13+
linux:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v2
17+
with:
18+
submodules: 'recursive'
19+
- uses: actions/cache@v2
20+
with:
21+
path: |
22+
~/.gradle/caches
23+
~/.gradle/wrapper
24+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
25+
restore-keys: |
26+
${{ runner.os }}-gradle-
27+
- name: Set up JDK 1.8
28+
uses: actions/setup-java@v1
29+
with:
30+
java-version: 1.8
31+
- name: Grant execute permission for gradlew
32+
run: chmod +x gradlew
33+
- name: Build with Gradle
34+
run: ./gradlew build
35+
- name: Upload all output libs
36+
uses: actions/[email protected]
37+
with:
38+
name: output-libs
39+
path: "*/build/libs"
40+
41+
- name: Snapshot build deploy
42+
if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository_owner == 'libgdx'
43+
run: ./gradlew build publish
44+
env:
45+
ORG_GRADLE_PROJECT_NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
46+
ORG_GRADLE_PROJECT_NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
47+
48+
- name: Import GPG key
49+
if: github.event_name == 'release' && github.repository_owner == 'libgdx'
50+
id: import_gpg
51+
uses: crazy-max/ghaction-import-gpg@1c6a9e9d3594f2d743f1b1dd7669ab0dfdffa922
52+
with:
53+
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
54+
passphrase: ${{ secrets.GPG_PASSPHRASE }}
55+
- name: Release build deploy
56+
if: github.event_name == 'release' && github.repository_owner == 'libgdx'
57+
run: ./gradlew build publish -PRELEASE -Psigning.gnupg.keyId=${{ secrets.GPG_KEYID }} -Psigning.gnupg.passphrase=${{ secrets.GPG_PASSPHRASE }} -Psigning.gnupg.keyName=${{ secrets.GPG_KEYID }}
58+
env:
59+
ORG_GRADLE_PROJECT_NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
60+
ORG_GRADLE_PROJECT_NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}

build.gradle

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ buildscript {
88
allprojects {
99
apply plugin: 'eclipse'
1010
apply plugin: 'idea'
11-
apply plugin: 'java'
11+
apply plugin: 'java-library'
1212

1313
repositories {
1414
mavenCentral()
@@ -19,8 +19,31 @@ allprojects {
1919
}
2020

2121
ext {
22-
projectGroup = "gdx-ai"
23-
gdxVersion = '1.11.0'
22+
projectGroup = "gdx-ai"
23+
gdxVersion = '1.11.0'
24+
25+
isReleaseBuild = {
26+
return project.hasProperty("RELEASE")
27+
}
28+
29+
getReleaseRepositoryUrl = {
30+
return project.hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
31+
: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
32+
}
33+
34+
getSnapshotRepositoryUrl = {
35+
return project.hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
36+
: "https://oss.sonatype.org/content/repositories/snapshots/"
37+
}
38+
39+
getRepositoryUsername = {
40+
return project.hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
41+
}
42+
43+
getRepositoryPassword = {
44+
return project.hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
45+
}
46+
2447
}
2548

2649
/** needed to disable Java 8 doclint which throws errors **/
@@ -33,18 +56,18 @@ if (JavaVersion.current().isJava8Compatible()) {
3356
}
3457

3558
project(":gdx-ai") {
36-
apply from : '../publish.gradle'
59+
apply from: '../publish.gradle'
3760

3861
dependencies {
39-
compile "com.badlogicgames.gdx:gdx:$gdxVersion"
62+
api "com.badlogicgames.gdx:gdx:$gdxVersion"
4063
}
4164
}
4265

4366
project(":tests") {
4467
dependencies {
45-
compile project(":gdx-ai")
46-
compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
47-
compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
68+
implementation project(":gdx-ai")
69+
implementation "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
70+
implementation "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
4871
}
4972
}
5073

gdx-ai/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ javadoc {
2525
}
2626

2727
dependencies {
28-
testCompile group: 'junit', name: 'junit', version: '4.12'
28+
testImplementation group: 'junit', name: 'junit', version: '4.12'
2929
}
3030

3131
idea.module.excludeDirs += [file("src/com/badlogic/gdx/emu/")]

gradle.properties

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
11
org.gradle.daemon=true
22
org.gradle.jvmargs=-Xms128m -Xmx512m -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8
33
org.gradle.configureondemand=false
4+
5+
group=com.badlogicgames.gdx
6+
version=1.8.3
7+
POM_DESCRIPTION=AI algorithms for libGDX
8+
POM_NAME=libGDX AI
9+
POM_URL=https://github.com/libgdx/gdx-ai
10+
POM_SCM_URL=https://github.com/libgdx/gdx-ai
11+
POM_SCM_CONNECTION=scm:[email protected]:libgdx/gdx-ai.git
12+
POM_SCM_DEV_CONNECTION=scm:[email protected]:libgdx/gdx-ai.git
13+
POM_LICENCE_NAME=The Apache Software License, Version 2.0
14+
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
15+
POM_LICENCE_DIST=repo

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip

publish.gradle

Lines changed: 64 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,75 @@
1-
import org.gradle.api.XmlProvider
2-
import org.gradle.api.artifacts.maven.MavenDeployment
3-
4-
apply plugin: 'maven'
1+
apply plugin: 'maven-publish'
52
apply plugin: 'signing'
63

7-
group = 'com.badlogicgames.gdx'
8-
version = '1.8.3'
9-
ext.packaging = 'jar'
10-
11-
def isDevBuild
12-
def isCiBuild
13-
def isReleaseBuild
14-
15-
def sonatypeRepositoryUrl
16-
17-
//set build variables based on build type (release, continuous integration, development)
18-
if(hasProperty("release")) {
19-
isReleaseBuild = true
20-
sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
21-
println "Performing release build"
22-
} else if (hasProperty("snapshot")) {
23-
isCiBuild = true
24-
version += "-SNAPSHOT"
25-
sonatypeRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
26-
println "Performing snapshot build"
27-
} else {
28-
isDevBuild = true
29-
version += "-SNAPSHOT"
30-
println "Performing local build"
31-
}
32-
33-
repositories {
34-
mavenCentral()
35-
}
36-
37-
task artifactDocs(type: Jar, dependsOn: javadoc) {
38-
classifier = 'javadoc'
39-
from 'build/docs/javadoc'
40-
}
41-
42-
task artifactSources(type: Jar) {
43-
from sourceSets.main.allSource
44-
classifier = 'sources'
45-
}
464

47-
artifacts {
48-
archives jar
49-
archives artifactDocs
50-
archives artifactSources
51-
}
52-
53-
if(isReleaseBuild) {
54-
signing {
55-
sign configurations.archives
56-
}
57-
} else {
58-
task signArchives {
59-
// do nothing
60-
}
61-
}
62-
63-
uploadArchives {
64-
repositories {
65-
if (isDevBuild) {
66-
mavenLocal()
67-
}
68-
else {
69-
mavenDeployer {
70-
if(isReleaseBuild) {
71-
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
5+
afterEvaluate { project ->
6+
publishing {
7+
publications {
8+
withType(MavenPublication) {
9+
pom {
10+
name = POM_NAME
11+
description = POM_DESCRIPTION
12+
url = POM_URL
13+
licenses {
14+
license {
15+
name = POM_LICENCE_NAME
16+
url = POM_LICENCE_URL
17+
distribution = POM_LICENCE_DIST
18+
}
19+
}
20+
developers {
21+
developer {
22+
id = "davebaol"
23+
name = "davebaol"
24+
}
25+
}
26+
scm {
27+
connection = POM_SCM_CONNECTION
28+
developerConnection = POM_SCM_DEV_CONNECTION
29+
url = POM_SCM_URL
30+
}
7231
}
73-
74-
repository(url: sonatypeRepositoryUrl) {
75-
authentication(userName: sonatypeUsername, password: sonatypePassword)
32+
}
33+
//Check if we are a gradle plugin, if we are skip mavenJava
34+
if (!plugins.hasPlugin('java-gradle-plugin')) {
35+
mavenJava(MavenPublication) {
36+
37+
from components.java
38+
versionMapping {
39+
usage('java-api') {
40+
fromResolutionOf('runtimeClasspath')
41+
}
42+
usage('java-runtime') {
43+
fromResolutionResult()
44+
}
45+
}
7646
}
47+
}
48+
}
7749

78-
pom.version = version
79-
pom.packaging = 'jar'
80-
81-
pom.project {
82-
name 'libGDX AI'
83-
description 'AI algorithms for libGDX'
84-
url 'https://github.com/libgdx/gdx-ai'
50+
repositories {
51+
maven {
52+
url = version.endsWith('SNAPSHOT') ? getSnapshotRepositoryUrl() : getReleaseRepositoryUrl()
8553

86-
scm {
87-
url 'scm:[email protected]:libgdx/gdx-ai.git'
88-
connection 'scm:[email protected]:libgdx/gdx-ai.git'
89-
developerConnection 'scm:[email protected]:libgdx/gdx-ai.git'
90-
}
54+
if (getRepositoryUsername() || getRepositoryPassword()) {
55+
credentials {
56+
username = getRepositoryUsername()
57+
password = getRepositoryPassword()
58+
}
59+
}
60+
}
61+
}
62+
}
9163

92-
licenses {
93-
license {
94-
name 'The Apache Software License, Version 2.0'
95-
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
96-
distribution 'repo'
97-
}
98-
}
64+
signing {
65+
useGpgCmd()
66+
sign publishing.publications
67+
}
9968

100-
developers {
101-
developer {
102-
id 'davebaol'
103-
name 'davebaol'
104-
}
105-
}
106-
}
107-
}
69+
//Simply using "required" in signing block doesn't work because taskGraph isn't ready yet.
70+
gradle.taskGraph.whenReady {
71+
tasks.withType(Sign) {
72+
onlyIf { isReleaseBuild() }
10873
}
10974
}
110-
}
75+
}

tests/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ sourceCompatibility = 1.7
55
sourceSets.main.java.srcDirs = [ "src/" ]
66

77
dependencies {
8-
compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
9-
compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
10-
compile "com.badlogicgames.gdx:gdx-bullet:$gdxVersion"
11-
compile "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"
12-
compile "com.esotericsoftware:kryo:3.0.3"
8+
implementation "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
9+
implementation "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
10+
implementation "com.badlogicgames.gdx:gdx-bullet:$gdxVersion"
11+
implementation "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"
12+
implementation "com.esotericsoftware:kryo:3.0.3"
1313
}
1414

1515
eclipse.project {

0 commit comments

Comments
 (0)