Skip to content

Commit f65ada7

Browse files
author
Francisco Solis
authored
Fixes and gradle (#20)
* Migration to Gradle * Fixes to workflows * Added jetbrains annotations & fixes * Reduced size of the API * Shadow HikariCP into Jar * Fixes to LogFilter * Fixes to random string generator
1 parent 087d325 commit f65ada7

File tree

25 files changed

+717
-723
lines changed

25 files changed

+717
-723
lines changed

.gitattributes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#
2+
# https://help.github.com/articles/dealing-with-line-endings/
3+
#
4+
# These are explicitly windows files and should use crlf
5+
*.bat text eol=crlf
6+

.github/workflows/gradle-build.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Java CI
2+
on:
3+
release:
4+
types: [published,prereleased]
5+
jobs:
6+
build:
7+
# Setup the OS
8+
runs-on: ubuntu-latest
9+
env:
10+
NEXUS_USERNAME: '${{ secrets.NEXUS_USERNAME }}'
11+
NEXUS_PASSWORD: '${{ secrets.NEXUS_PASSWORD }}'
12+
steps:
13+
# Checkout the code
14+
- name: Ceckout the Code
15+
uses: actions/checkout@v2
16+
# Install java and maven
17+
- name: Set up JDK 1.8
18+
uses: actions/setup-java@v2
19+
with:
20+
distribution: adopt
21+
java-version: 8
22+
# Test and deploy
23+
- name: Make gradle executable
24+
run: chmod +x gradlew
25+
- name: Test and Deploy with Gradle
26+
run: ./gradlew clean test shadow publish
27+
# Now we store the artifact in the action
28+
- name: Create & Copy artifact
29+
run: mkdir -p ./artifacts && cp build/libs/SuperCoreAPI.jar ./artifacts/
30+
- name: Upload the artifact
31+
uses: actions/upload-artifact@v2
32+
with:
33+
name: SuperCoreAPI
34+
path: ./artifacts/SuperCoreAPI.jar
35+
- name: Deploy Javadoc
36+
uses: JamesIves/[email protected]
37+
with:
38+
branch: gh-pages
39+
folder: build/docs/javadoc
40+
clean: true
41+
42+

.github/workflows/gradle-test.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Gradle Test
2+
# Only execute this workflow when a PR is opened or when something is pushed to a the master branch
3+
on:
4+
push
5+
jobs:
6+
testBuilds:
7+
strategy:
8+
fail-fast: false
9+
max-parallel: 4
10+
matrix:
11+
java-version: [8,11,16]
12+
# Setup OS
13+
runs-on: ubuntu-latest
14+
steps:
15+
# Checkout code
16+
- name: Checkout Code
17+
uses: actions/checkout@v2
18+
# Setup java and maven
19+
- name: Set up JDK ${{ matrix.java-version }}
20+
uses: actions/setup-java@v2
21+
with:
22+
distribution: adopt
23+
java-version: ${{ matrix.java-version }}
24+
# Setup executable gradle
25+
- name: Make Gradle executable
26+
run: chmod +x gradlew
27+
# Run gradle test
28+
- name: Run Gradle Test with Java ${{ matrix.java-version }}
29+
run: ./gradlew test
30+
# Test bulding without javadocs
31+
- name: Build Jar with Java ${{ matrix.java-version }}
32+
run: ./gradlew build --no-daemon --no-build-cache --no-scan -x javadoc

.github/workflows/maven-build.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

.github/workflows/maven.yml

Lines changed: 0 additions & 66 deletions
This file was deleted.

.gitignore

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ buildNumber.properties
1717
.idea/**/dataSources/
1818
.idea/**/dataSources.ids
1919
.idea/**/dataSources.local.xml
20-
.idea/**/sqlDataSources.xml
20+
.idea/**/sqlDataSources.xml
2121
.idea/**/dynamic.xml
2222
.idea/**/uiDesigner.xml
2323
.idea/**/dbnavigator.xml
@@ -70,4 +70,8 @@ Temporary Items
7070
.project
7171
.settings/
7272
.env
73-
.secrets.env
73+
.secrets.env
74+
.gradle/
75+
build/
76+
bin/
77+
*.pom.xml

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SuperCoreAPI
22
_The best way to create a plugin_<br>
33
[![Latest Release](https://img.shields.io/nexus/r/xyz.theprogramsrc/SuperCoreAPI?color=%2300ff00&label=Latest%20Release&nexusVersion=3&server=https%3A%2F%2Frepo.theprogramsrc.xyz)](https://repo.theprogramsrc.xyz/#browse/browse:maven-releases)
4-
[![Latest Snapshot](https://img.shields.io/nexus/s/xyz.theprogramsrc/SuperCoreAPI?color=%23ff5800&label=Latest%20Snapshot&server=https%3A%2F%2Frepo.theprogramsrc.xyz)](https://repo.theprogramsrc.xyz/#browse/browse:maven-snapshots)
4+
[![Latest Snapshot](https://img.shields.io/badge/dynamic/xml?url=https://repo.theprogramsrc.xyz/repository/maven-snapshots/xyz/theprogramsrc/SuperCoreAPI/maven-metadata.xml&label=Latest%20Snapshot&color=orange&query=.//versioning/latest&prefix=v)](https://repo.theprogramsrc.xyz/#browse/browse:maven-snapshots)
55
[![Build Status](https://ci.theprogramsrc.xyz/job/MinecraftPlugins/job/SuperCoreAPI/badge/icon)](https://ci.theprogramsrc.xyz/job/MinecraftPlugins/job/SuperCoreAPI/)
66
<br>
77
[![Discord](https://i.imgur.com/J1XhmMd.png)](https://go.theprogramsrc.xyz/discord)

build.gradle

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
plugins {
2+
id 'java'
3+
id 'maven-publish'
4+
id 'com.github.johnrengelman.shadow' version '7.1.0'
5+
}
6+
7+
group 'xyz.theprogramsrc'
8+
version '5.3.1-SNAPSHOT'
9+
description 'The best way to create a plugin'
10+
11+
repositories{
12+
mavenCentral()
13+
mavenLocal()
14+
15+
maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
16+
maven { url 'https://repo.theprogramsrc.xyz/repository/maven-public/' }
17+
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
18+
maven { url 'https://oss.sonatype.org/content/repositories/releases/' }
19+
maven { url 'https://oss.sonatype.org/content/groups/public/' }
20+
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
21+
maven { url 'https://repo.codemc.org/repository/maven-public' }
22+
maven { url 'https://repo.codemc.org/repository/nms' }
23+
maven { url 'https://jitpack.io' }
24+
}
25+
26+
dependencies {
27+
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
28+
compileOnly 'org.spigotmc:spigot:1.16.5-R0.1-SNAPSHOT'
29+
compileOnly 'net.md-5:bungeecord-api:1.17-R0.1-SNAPSHOT'
30+
31+
implementation 'com.github.cryptomorin:XSeries:8.4.0'
32+
implementation 'org.slf4j:slf4j-nop:1.7.32'
33+
implementation 'org.slf4j:slf4j-api:1.7.32'
34+
implementation 'commons-io:commons-io:2.11.0'
35+
implementation 'com.google.code.gson:gson:2.8.9'
36+
implementation 'me.carleslc.Simple-YAML:Simple-Yaml:1.7.2'
37+
implementation 'com.zaxxer:HikariCP:3.3.1'
38+
compileOnly 'org.xerial:sqlite-jdbc:3.25.2'
39+
implementation 'org.apache.logging.log4j:log4j-api:2.13.2'
40+
compileOnly 'org.apache.logging.log4j:log4j-core:2.13.2'
41+
implementation 'net.lingala.zip4j:zip4j:2.9.0'
42+
compileOnly 'me.clip:placeholderapi:2.10.9'
43+
implementation 'org.jetbrains:annotations:23.0.0'
44+
45+
testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'
46+
}
47+
48+
test {
49+
useJUnitPlatform()
50+
}
51+
52+
sourceCompatibility = 1.8
53+
targetCompatibility = 1.8
54+
java.withJavadocJar()
55+
java.withSourcesJar()
56+
57+
tasks.withType(JavaCompile) {
58+
options.encoding = 'UTF-8'
59+
}
60+
61+
tasks.withType(Javadoc) {
62+
failOnError false
63+
options.addStringOption('Xdoclint:none', '-quiet')
64+
options.addStringOption('encoding', 'UTF-8')
65+
options.addStringOption('charSet', 'UTF-8')
66+
}
67+
68+
tasks.withType(Copy) {
69+
duplicatesStrategy = 'include'
70+
exclude 'META-INF/**'
71+
}
72+
73+
tasks.withType(Jar) {
74+
duplicatesStrategy = 'include'
75+
exclude 'META-INF/**'
76+
}
77+
78+
shadowJar {
79+
relocate 'com.google', 'xyz.theprogramsrc.supercoreapi.libs.google'
80+
relocate 'org.apache.commons', 'xyz.theprogramsrc.supercoreapi.libs.apache.commons'
81+
relocate 'com.cryptomorin.xseries', 'xyz.theprogramsrc.supercoreapi.libs.xseries'
82+
relocate 'org.simpleyaml', 'xyz.theprogramsrc.supercoreapi.libs.simpleyaml'
83+
relocate 'org.yaml.snakeyaml', 'xyz.theprogramsrc.supercoreapi.libs.snakeyaml'
84+
relocate 'org.slf4j', 'xyz.theprogramsrc.supercoreapi.libs.slf4j'
85+
relocate 'net.lingala.zip4j', 'xyz.theprogramsrc.supercoreapi.libs.zip4j'
86+
relocate 'org.checkerframework', 'xyz.theprogramsrc.supercoreapi.libs.checkerframework'
87+
relocate 'org.intellij', 'xyz.theprogramsrc.supercoreapi.libs.intellij'
88+
relocate 'org.jetbrains', 'xyz.theprogramsrc.supercoreapi.libs.jetbrains'
89+
relocate 'javax.annotation', 'xyz.theprogramsrc.supercoreapi.libs.annotation'
90+
relocate 'com.zaxxer.hikari', 'xyz.theprogramsrc.supercoreapi.libs.hikari'
91+
92+
archiveBaseName.set('SuperCoreAPI')
93+
archiveClassifier.set('')
94+
archiveVersion.set('')
95+
minimize()
96+
}
97+
98+
configurations {
99+
testImplementation {
100+
extendsFrom(compileOnly)
101+
}
102+
}
103+
104+
sourceSets.main.java.srcDir 'src/main/java'
105+
sourceSets.test.java.srcDir 'src/test/java'
106+
107+
def repos = repositories
108+
109+
publishing {
110+
publications {
111+
mavenJava(MavenPublication) {
112+
artifactId 'SuperCoreAPI'
113+
114+
artifact(tasks["shadowJar"])
115+
116+
pom.withXml {
117+
def root = asNode()
118+
119+
root.appendNode('description', description)
120+
root.appendNode('packaging', 'jar')
121+
root.appendNode('url', 'https://github.com/TheProgramsrc/SuperCoreAPI')
122+
123+
final repositoriesNode = root.appendNode('repositories')
124+
repos.each {
125+
if(it.name == 'MavenLocal'){
126+
return
127+
}
128+
def repositoryNode = repositoriesNode.appendNode('repository')
129+
repositoryNode.appendNode('id', it.name)
130+
repositoryNode.appendNode('url', it.url)
131+
}
132+
133+
final dependenciesNode = root.appendNode('dependencies')
134+
ext.addDependency = { dep, String scope ->
135+
if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
136+
return // ignore invalid dependencies
137+
138+
final dependencyNode = dependenciesNode.appendNode('dependency')
139+
dependencyNode.appendNode('groupId', dep.group)
140+
dependencyNode.appendNode('artifactId', dep.name)
141+
dependencyNode.appendNode('version', dep.version)
142+
dependencyNode.appendNode('scope', scope)
143+
144+
if (!dep.transitive) {
145+
// If this dependency is not transitive, we should force exclude all its dependencies from the POM
146+
final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
147+
exclusionNode.appendNode('groupId', '*')
148+
exclusionNode.appendNode('artifactId', '*')
149+
} else if (!dep.properties.excludeRules.empty) {
150+
// Otherwise add specified exclude rules
151+
final exclusionsNode = dependencyNode.appendNode('exclusions')
152+
dep.properties.excludeRules.each { rule ->
153+
final exclusionNode = exclusionsNode.appendNode('exclusion')
154+
exclusionNode.appendNode('groupId', rule.group ?: '*')
155+
exclusionNode.appendNode('artifactId', rule.module ?: '*')
156+
}
157+
}
158+
}
159+
160+
configurations.compileOnly.getDependencies().each { dep -> addDependency(dep, "provided") }
161+
configurations.implementation.getDependencies().each { dep -> addDependency(dep, "compile") }
162+
configurations.testImplementation.getDependencies().each { dep -> addDependency(dep, "test") }
163+
}
164+
}
165+
}
166+
repositories {
167+
maven {
168+
credentials.username = System.getenv('NEXUS_USERNAME')
169+
credentials.password = System.getenv('NEXUS_PASSWORD')
170+
url = uri(version.contains('-SNAPSHOT') ? 'https://repo.theprogramsrc.xyz/repository/maven-snapshots/' : 'https://repo.theprogramsrc.xyz/repository/maven-releases/')
171+
}
172+
}
173+
}
174+
175+
javadoc {
176+
if(JavaVersion.current().isJava9Compatible()) {
177+
options.addBooleanOption('html5', true)
178+
}
179+
}
180+
181+
publish.dependsOn clean, test, jar

0 commit comments

Comments
 (0)