Skip to content

Commit 6ba2da7

Browse files
build: GitHub Pacakages publishing
1 parent 7ca68a3 commit 6ba2da7

40 files changed

+89
-114
lines changed

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,11 @@ The following algorithms are used by the AI BOT in this project (For a detailed
6464
- [Minimax w. Alpha-Beta](https://en.wikipedia.org/wiki/Alpha-beta_pruning) See: [AlphaBeta.java](app/src/main/java/org/example/bot/AlphaBeta.java)
6565
- [MaxN](https://en.wikipedia.org/wiki/Maxn_algorithm) See: [MaxN.java](app/src/main/java/org/example/bot/MaxN.java)
6666
- [Paranoid](https://en.wikipedia.org/wiki/Paranoid_AI) See: [Paranoid.java](app/src/main/java/org/example/bot/Paranoid.java)
67-
- [Monte Carlo Tree Search](https://en.wikipedia.org/wiki/Monte_Carlo_method) See [MonteCarloTreeSearch.java](app/src/main/java/org/example/bot/MonteCarloTreeSearch.java)
67+
- [Monte Carlo Tree Search](https://en.wikipedia.org/wiki/Monte_Carlo_method) See [MonteCarloTreeSearch.java](app/src/main/java/org/example/bot/MonteCarloTreeSearch.java)
68+
69+
70+
---
71+
72+
### Quick Start
73+
74+
- To run the single game application, use the following command: `./gradlew run`

app/build.gradle.kts

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
application
66
id("org.graalvm.buildtools.native") version "0.10.2"
77
id("com.diffplug.spotless") version "7.0.0.BETA1"
8+
`maven-publish`
89
}
910

1011
repositories {
@@ -13,6 +14,8 @@ repositories {
1314
gradlePluginPortal()
1415
}
1516

17+
val jdkVersion = "22"
18+
1619
// JDK22: Foreign Function Interface (FFI)
1720
// Support building native Rust library using Cargo:
1821
// https://doc.rust-lang.org/cargo/getting-started/installation.html
@@ -119,7 +122,7 @@ testing {
119122
// Apply a specific Java toolchain to ease working on different environments.
120123
java {
121124
toolchain {
122-
languageVersion = JavaLanguageVersion.of(23)
125+
languageVersion = JavaLanguageVersion.of(jdkVersion)
123126
}
124127
}
125128

@@ -138,7 +141,7 @@ graalvmNative {
138141
javaLauncher = javaToolchains.launcherFor {
139142
// NB: On MacOS ARM ARCH the native-image implementation is not available
140143
// for the versions of GRAAL_VM Community edition - selecting Oracle
141-
languageVersion = JavaLanguageVersion.of(23)
144+
languageVersion = JavaLanguageVersion.of(jdkVersion)
142145
vendor = JvmVendorSpec.matching("Oracle")
143146
// languageVersion = JavaLanguageVersion.of(17)
144147
// vendor = JvmVendorSpec.GRAAL_VM
@@ -164,6 +167,53 @@ tasks.run.configure {
164167
standardInput = System.`in`
165168
}
166169

170+
// https://docs.gradle.org/current/userguide/publishing_maven.html
171+
publishing {
172+
repositories {
173+
// Publish to GitHub Packages
174+
// https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle
175+
maven {
176+
name = "GitHubPackages"
177+
url = uri("https://maven.pkg.github.com/briancorbinxyz/overengineering-tictactoe")
178+
credentials {
179+
username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
180+
password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
181+
}
182+
}
183+
}
184+
publications {
185+
create<MavenPublication>("maven") {
186+
groupId = "org.xxdc.oss.example"
187+
artifactId = "tictactoe"
188+
version = "1.0.0-jdk$jdkVersion"
189+
from(components["java"])
190+
pom {
191+
name.set("tictactoe")
192+
description.set("An Over-Engineered Tic Tac Toe game")
193+
url.set("https://github.com/briancorbinxyz/overengineering-tictactoe")
194+
licenses {
195+
license {
196+
name.set("MIT License")
197+
url.set("https://opensource.org/licenses/MIT")
198+
}
199+
developers {
200+
developer {
201+
id.set("briancorbinxyz")
202+
name.set("Brian Corbin")
203+
email.set("mail@briancorbin.xyz")
204+
}
205+
}
206+
}
207+
scm {
208+
connection.set("scm:git:git://github.com/briancorbinxyz/overengineering-tictactoe.git")
209+
developerConnection.set("scm:git:ssh://github.com/briancorbinxyz/overengineering-tictactoe.git")
210+
url.set("https://github.com/briancorbinxyz/overengineering-tictactoe")
211+
}
212+
}
213+
}
214+
}
215+
}
216+
167217
tasks.withType<Test>().all {
168218
systemProperty(
169219
"java.library.path", libPath

app/src/main/java/org/xxdc/oss/example/App.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
package org.xxdc.oss.example;
55

66
import java.io.File;
7-
8-
import org.xxdc.oss.example.bot.BotStrategy;
9-
import org.xxdc.oss.example.bot.BotStrategyConfig;
10-
117
import java.lang.System.Logger;
128
import java.lang.System.Logger.Level;
9+
import org.xxdc.oss.example.bot.BotStrategy;
10+
import org.xxdc.oss.example.bot.BotStrategyConfig;
1311

1412
/** A simple java tic-tac-toe game. */
1513
public class App {

app/src/main/java/org/xxdc/oss/example/BotPlayer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.io.Serializable;
44
import java.util.function.ToIntFunction;
5-
65
import org.xxdc.oss.example.bot.BotStrategy;
76

87
/**

app/src/main/java/org/xxdc/oss/example/GameBoardNativeImpl.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.lang.System.Logger;
44
import java.lang.invoke.MethodHandles;
5-
65
import org.xxdc.oss.example.interop.TicTacToeLibrary;
76

87
/**

app/src/main/java/org/xxdc/oss/example/GameClient.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.util.concurrent.Executors;
1010
import java.util.concurrent.TimeUnit;
1111
import java.util.concurrent.atomic.LongAdder;
12-
1312
import org.xxdc.oss.example.bot.BotStrategy;
1413
import org.xxdc.oss.example.transport.Transports;
1514

app/src/main/java/org/xxdc/oss/example/GameServer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import java.util.concurrent.atomic.LongAccumulator;
1313
import java.util.concurrent.atomic.LongAdder;
1414
import java.util.function.Supplier;
15-
1615
import org.xxdc.oss.example.transport.tcp.TcpTransportServer;
1716

1817
public class GameServer {

app/src/main/java/org/xxdc/oss/example/PlayerNode.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.lang.System.Logger;
55
import java.lang.System.Logger.Level;
66
import java.util.function.ToIntFunction;
7-
87
import org.xxdc.oss.example.transport.TransportConfiguration;
98
import org.xxdc.oss.example.transport.TransportServer;
109

app/src/main/java/org/xxdc/oss/example/bot/AlphaBeta.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.lang.System.Logger;
44
import java.lang.System.Logger.Level;
5-
65
import org.xxdc.oss.example.GameState;
76

87
public final class AlphaBeta implements BotStrategy {

app/src/main/java/org/xxdc/oss/example/bot/BotStrategy.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.util.concurrent.TimeUnit;
44
import java.util.function.ToIntFunction;
5-
65
import org.xxdc.oss.example.GameState;
76

87
public sealed interface BotStrategy

0 commit comments

Comments
 (0)