Skip to content

Commit bd026d7

Browse files
committed
Migrate the build system from Maven to Gradle
1 parent abef99e commit bd026d7

14 files changed

+630
-53
lines changed
Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
name: Publish libayatana-appindicator-java-full to Maven Central
2+
23
on:
34
release:
45
types: [published]
@@ -11,25 +12,41 @@ jobs:
1112
publish:
1213
runs-on: ubuntu-latest
1314
if: startsWith(github.ref, 'refs/tags/') # only allow publishing tagged versions
15+
1416
steps:
1517
- uses: actions/checkout@v4
1618
with:
17-
ref: 'libayatana-appindicator-full'
18-
- uses: actions/setup-java@v3
19+
ref: 'libayatana-appindicator-full'
20+
21+
- name: Set up Java
22+
uses: actions/setup-java@v4
1923
with:
24+
java-version: '22'
2025
distribution: 'zulu'
21-
java-version: 22
22-
cache: 'maven'
23-
server-id: ossrh
24-
server-username: MAVEN_USERNAME
25-
server-password: MAVEN_PASSWORD
26-
gpg-private-key: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
27-
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
28-
- name: Enforce project version ${{ github.event.release.tag_name }}
29-
run: mvn versions:set -B -DnewVersion="${{ github.event.release.tag_name }}"
30-
- name: Deploy
31-
run: mvn deploy -B -DskipTests -Psign,deploy-central --no-transfer-progress
26+
27+
- name: Setup Gradle
28+
uses: gradle/actions/setup-gradle@v4
29+
30+
- name: Import GPG key
31+
run: |
32+
echo "$GPG_SIGNING_KEY_PW" | gpg --batch --import --yes --passphrase-fd 0 <(echo -n "$GPG_SIGNING_KEY_B64" | base64 --decode)
33+
env:
34+
GPG_SIGNING_KEY_B64: ${{ secrets.GPG_PRIVATE_KEY_B64 }}
35+
GPG_SIGNING_KEY_PW: ${{ secrets.GPG_PASSPHRASE }}
36+
37+
- name: Setup GPG key information
38+
run: |
39+
mkdir -p ~/.gradle
40+
echo "signing.gnupg.passphrase=${GPG_SIGNING_KEY_PW}" >> ~/.gradle/gradle.properties
41+
env:
42+
GPG_SIGNING_KEY_PW: ${{ secrets.GPG_PASSPHRASE }}
43+
44+
- name: Build package
45+
run: ./gradlew clean build
46+
env:
47+
48+
- name: Publish package
49+
run: ./gradlew publishToSonatype closeSonatypeStagingRepository
3250
env:
33-
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
34-
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
35-
MAVEN_GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
51+
SONATYPE_USERNAME: ${{ secrets.NEXUS_USERNAME }}
52+
SONATYPE_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}

.github/workflows/publish-maven.yml

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
name: Publish libappindicator-gtk3-java-full to Maven Central
2+
23
on:
34
release:
45
types: [published]
@@ -11,25 +12,41 @@ jobs:
1112
publish:
1213
runs-on: ubuntu-latest
1314
if: startsWith(github.ref, 'refs/tags/') # only allow publishing tagged versions
15+
1416
steps:
15-
- uses: actions/checkout@v3
17+
- uses: actions/checkout@v4
1618
with:
17-
ref: 'develop'
18-
- uses: actions/setup-java@v3
19+
ref: 'develop'
20+
21+
- name: Set up Java
22+
uses: actions/setup-java@v4
1923
with:
24+
java-version: '22'
2025
distribution: 'zulu'
21-
java-version: 21
22-
cache: 'maven'
23-
server-id: ossrh
24-
server-username: MAVEN_USERNAME
25-
server-password: MAVEN_PASSWORD
26-
gpg-private-key: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
27-
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
28-
- name: Enforce project version ${{ github.event.release.tag_name }}
29-
run: mvn versions:set -B -DnewVersion="${{ github.event.release.tag_name }}"
30-
- name: Deploy
31-
run: mvn deploy -B -DskipTests -Psign,deploy-central --no-transfer-progress
26+
27+
- name: Setup Gradle
28+
uses: gradle/actions/setup-gradle@v4
29+
30+
- name: Import GPG key
31+
run: |
32+
echo "$GPG_SIGNING_KEY_PW" | gpg --batch --import --yes --passphrase-fd 0 <(echo -n "$GPG_SIGNING_KEY_B64" | base64 --decode)
33+
env:
34+
GPG_SIGNING_KEY_B64: ${{ secrets.GPG_PRIVATE_KEY_B64 }}
35+
GPG_SIGNING_KEY_PW: ${{ secrets.GPG_PASSPHRASE }}
36+
37+
- name: Setup GPG key information
38+
run: |
39+
mkdir -p ~/.gradle
40+
echo "signing.gnupg.passphrase=${GPG_SIGNING_KEY_PW}" >> ~/.gradle/gradle.properties
41+
env:
42+
GPG_SIGNING_KEY_PW: ${{ secrets.GPG_PASSPHRASE }}
43+
44+
- name: Build package
45+
run: ./gradlew clean build
46+
env:
47+
48+
- name: Publish package
49+
run: ./gradlew publishToSonatype closeSonatypeStagingRepository
3250
env:
33-
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
34-
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
35-
MAVEN_GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
51+
SONATYPE_USERNAME: ${{ secrets.NEXUS_USERNAME }}
52+
SONATYPE_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
name: Publish libappindicator-gtk3-java-minimal to Maven Central
2+
23
on:
34
release:
45
types: [published]
@@ -11,25 +12,41 @@ jobs:
1112
publish:
1213
runs-on: ubuntu-latest
1314
if: startsWith(github.ref, 'refs/tags/') # only allow publishing tagged versions
15+
1416
steps:
15-
- uses: actions/checkout@v3
17+
- uses: actions/checkout@v4
1618
with:
17-
ref: 'minimal'
18-
- uses: actions/setup-java@v3
19+
ref: 'minimal'
20+
21+
- name: Set up Java
22+
uses: actions/setup-java@v4
1923
with:
24+
java-version: '22'
2025
distribution: 'zulu'
21-
java-version: 22
22-
cache: 'maven'
23-
server-id: ossrh
24-
server-username: MAVEN_USERNAME
25-
server-password: MAVEN_PASSWORD
26-
gpg-private-key: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
27-
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
28-
- name: Enforce project version ${{ github.event.release.tag_name }}
29-
run: mvn versions:set -B -DnewVersion="${{ github.event.release.tag_name }}"
30-
- name: Deploy
31-
run: mvn deploy -B -DskipTests -Psign,deploy-central --no-transfer-progress
26+
27+
- name: Setup Gradle
28+
uses: gradle/actions/setup-gradle@v4
29+
30+
- name: Import GPG key
31+
run: |
32+
echo "$GPG_SIGNING_KEY_PW" | gpg --batch --import --yes --passphrase-fd 0 <(echo -n "$GPG_SIGNING_KEY_B64" | base64 --decode)
33+
env:
34+
GPG_SIGNING_KEY_B64: ${{ secrets.GPG_PRIVATE_KEY_B64 }}
35+
GPG_SIGNING_KEY_PW: ${{ secrets.GPG_PASSPHRASE }}
36+
37+
- name: Setup GPG key information
38+
run: |
39+
mkdir -p ~/.gradle
40+
echo "signing.gnupg.passphrase=${GPG_SIGNING_KEY_PW}" >> ~/.gradle/gradle.properties
41+
env:
42+
GPG_SIGNING_KEY_PW: ${{ secrets.GPG_PASSPHRASE }}
43+
44+
- name: Build package
45+
run: ./gradlew clean build
46+
env:
47+
48+
- name: Publish package
49+
run: ./gradlew publishToSonatype closeSonatypeStagingRepository
3250
env:
33-
MAVEN_USERNAME: ${{ secrets.NEXUS_USERNAME }}
34-
MAVEN_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
35-
MAVEN_GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
51+
SONATYPE_USERNAME: ${{ secrets.NEXUS_USERNAME }}
52+
SONATYPE_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}

.gitignore

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
*.class
22
*.jar
33

4-
# Maven #
5-
target/
6-
pom.xml.versionsBackup
4+
# Gradle
5+
.gradle
6+
build/
7+
!gradle/wrapper/gradle-wrapper.jar
8+
!**/src/main/**/build/
9+
!**/src/test/**/build/
710

811
# IntelliJ Settings Files (https://intellij-support.jetbrains.com/hc/en-us/articles/206544839-How-to-manage-projects-under-Version-Control-Systems) #
912
.idea/**/workspace.xml

.idea/gradle.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ The bindings come in three flavors:
2626
- harfbuzz
2727

2828
[![Maven Central](https://img.shields.io/maven-central/v/org.purejava/libappindicator-gtk3-java-full.svg?label=Maven%20Central)](https://central.sonatype.com/search?q=libappindicator-gtk3-java-full&smo=true&namespace=org.purejava)
29+
### Gradle
30+
```groovy
31+
implementation group: 'org.purejava', name: 'libappindicator-gtk3-java-full', version: '1.4.2'
32+
```
33+
### Maven
2934
```java
3035
<dependency>
3136
<groupId>org.purejava</groupId>
@@ -107,6 +112,11 @@ As the according jar has a size of ~9,6M, I decided to provide a **reduced varia
107112
- APP_INDICATOR_STATUS_ATTENTION
108113

109114
[![Maven Central](https://img.shields.io/maven-central/v/org.purejava/libappindicator-gtk3-java-minimal.svg?label=Maven%20Central)](https://central.sonatype.com/search?q=libappindicator-gtk3-java-minimal&smo=true&namespace=org.purejava)
115+
### Gradle
116+
```groovy
117+
implementation group: 'org.purejava', name: 'libappindicator-gtk3-java-minimal', version: '1.4.2'
118+
```
119+
### Maven
110120
```java
111121
<dependency>
112122
<groupId>org.purejava</groupId>
@@ -126,6 +136,11 @@ Starting with version 1.1.0, the `minimal` artifact is compatible to libayatana-
126136
- harfbuzz
127137

128138
[![Maven Central](https://img.shields.io/maven-central/v/org.purejava/libayatana-appindicator-java-full.svg?label=Maven%20Central)](https://central.sonatype.com/search?q=libayatana-appindicator-java-full&smo=true&namespace=org.purejava)
139+
### Gradle
140+
```groovy
141+
implementation group: 'org.purejava', name: 'libayatana-appindicator-java-full', version: '1.4.2'
142+
```
143+
### Maven
129144
```java
130145
<dependency>
131146
<groupId>org.purejava</groupId>

build.gradle

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
plugins {
2+
id 'java-library'
3+
id 'io.github.gradle-nexus.publish-plugin' version '2.0.0'
4+
id 'maven-publish'
5+
id 'signing'
6+
}
7+
8+
repositories {
9+
mavenCentral()
10+
}
11+
12+
dependencies {
13+
api libs.org.slf4j.slf4j.api
14+
testImplementation libs.org.junit.jupiter.junit.jupiter.api
15+
testImplementation libs.org.junit.jupiter.junit.jupiter.engine
16+
testImplementation libs.org.junit.jupiter.junit.jupiter
17+
testImplementation libs.org.slf4j.slf4j.simple
18+
}
19+
20+
group = 'org.purejava'
21+
version = '1.4.3-SNAPSHOT'
22+
description = 'Java bindings for libayatana-appindicator in 100% pure Java'
23+
java.sourceCompatibility = JavaVersion.VERSION_22
24+
25+
def sonatypeUsername = System.getenv("SONATYPE_USERNAME") ?: ''
26+
def sonatypePassword = System.getenv("SONATYPE_PASSWORD") ?: ''
27+
28+
java {
29+
withSourcesJar()
30+
withJavadocJar()
31+
}
32+
33+
test {
34+
useJUnitPlatform()
35+
filter {
36+
includeTestsMatching "AppIndicatorTest"
37+
}
38+
}
39+
40+
publishing {
41+
publications {
42+
mavenJava(MavenPublication) {
43+
from(components.java)
44+
pom {
45+
name = 'libayatana-appindicator-java-full'
46+
description = 'Java bindings for libayatana-appindicator in 100% pure Java'
47+
url = 'https://github.com/purejava/appindicator-gtk3-java'
48+
licenses {
49+
license {
50+
name = 'MIT License'
51+
url = 'https://opensource.org/licenses/MIT'
52+
}
53+
}
54+
developers {
55+
developer {
56+
id = 'purejava'
57+
name = 'Ralph Plawetzki'
58+
59+
}
60+
}
61+
scm {
62+
connection = 'scm:git:git://github.com/purejava/appindicator-gtk3-java.git'
63+
developerConnection = 'scm:git:ssh://github.com/purejava/appindicator-gtk3-java.git'
64+
url = 'https://github.com/purejava/appindicator-gtk3-java/tree/libayatana-appindicator-full'
65+
}
66+
issueManagement {
67+
system = 'GitHub Issues'
68+
url = 'https://github.com/purejava/appindicator-gtk3-java/issues'
69+
}
70+
}
71+
}
72+
}
73+
}
74+
75+
nexusPublishing {
76+
repositories {
77+
sonatype { //only for users registered in Sonatype after 24 Feb 2021
78+
nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
79+
snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
80+
username = sonatypeUsername
81+
password = sonatypePassword
82+
}
83+
}
84+
}
85+
86+
if (!version.toString().endsWith("-SNAPSHOT")) {
87+
signing {
88+
useGpgCmd()
89+
sign configurations.runtimeElements
90+
sign publishing.publications.mavenJava
91+
}
92+
}
93+
94+
javadoc {
95+
if(JavaVersion.current().isJava9Compatible()) {
96+
options.addBooleanOption('html5', true)
97+
}
98+
}
99+
100+
tasks.withType(Javadoc) {
101+
failOnError = false
102+
}
103+
104+
tasks.withType(JavaCompile) {
105+
options.encoding = 'UTF-8'
106+
}
107+
108+
tasks.withType(Javadoc) {
109+
options.encoding = 'UTF-8'
110+
}

gradle.properties

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# This file was generated by the Gradle 'init' task.
2+
# https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties
3+
4+
org.gradle.configuration-cache=true
5+
org.gradle.parallel=true
6+
org.gradle.caching=true
7+

0 commit comments

Comments
 (0)