diff --git a/.github/workflows/maven.yaml b/.github/workflows/maven.yaml
new file mode 100644
index 00000000..e65f4e48
--- /dev/null
+++ b/.github/workflows/maven.yaml
@@ -0,0 +1,27 @@
+name: Publish Maven artifacts
+
+on:
+ push:
+ branches:
+ - 'main'
+
+jobs:
+ publish-api-artifact:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: 'gradle'
+
+ - name: Setup Gradle
+ uses: gradle/actions/setup-gradle@v4
+
+ - name: Publish package
+ working-directory: ./api
+ run: ./gradlew publish
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/api/build.gradle b/api/build.gradle
index ae13ef53..32341afe 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -1,5 +1,6 @@
plugins {
id 'java'
+ id 'maven-publish'
}
sourceCompatibility = JavaVersion.VERSION_11
@@ -7,6 +8,7 @@ targetCompatibility = JavaVersion.VERSION_11
group 'by.borge.jarl'
version '0.1.0-SNAPSHOT'
+description 'Jarl JVM API'
repositories {
mavenCentral()
@@ -31,3 +33,29 @@ task lein(type: Exec) {
outputs.files "../core/target/jarl-${version}-standalone.jar"
}
tasks.compileJava.dependsOn lein
+
+jar {
+ from {
+ configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+ }
+}
+tasks.jar.dependsOn compileJava
+tasks.publish.dependsOn jar
+
+publishing {
+ publications {
+ jarlApi(MavenPublication) {
+ from components.java
+ }
+ }
+ repositories {
+ maven {
+ name = "GitHubPackages"
+ url = "https://maven.pkg.github.com/borgeby/jarl"
+ credentials {
+ username = '_'
+ password = System.getenv("GITHUB_TOKEN")
+ }
+ }
+ }
+}
diff --git a/core/pom.xml b/core/pom.xml
index 30b9da93..cecb0540 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -129,6 +129,12 @@
org.bitbucket.b_c
jose4j
0.9.2
+
+
+ slf4j-api
+ org.sjf4j
+
+
org.apache.commons
diff --git a/core/project.clj b/core/project.clj
index 27c847bc..055270ca 100644
--- a/core/project.clj
+++ b/core/project.clj
@@ -60,4 +60,5 @@
; more recent version provided by shadow-cljs
:exclusions [com.google.javascript/closure-compiler-unshaded]]
[thheller/shadow-cljs "2.20.14"]]
- :source-paths ["src/main/cljs" "src/main/cljc" "src/test/cljs" "src/test/cljc"]}})
+ :source-paths ["src/main/cljs" "src/main/cljc" "src/test/cljs" "src/test/cljc"]}
+ :uberjar {:uberjar-exclusions [#"org/slf4j"]}})