Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# These are explicitly windows files and should use crlf
*.bat text eol=crlf

42 changes: 42 additions & 0 deletions .github/workflows/gradle-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Java CI
on:
release:
types: [published,prereleased]
jobs:
build:
# Setup the OS
runs-on: ubuntu-latest
env:
NEXUS_USERNAME: '${{ secrets.NEXUS_USERNAME }}'
NEXUS_PASSWORD: '${{ secrets.NEXUS_PASSWORD }}'
steps:
# Checkout the code
- name: Ceckout the Code
uses: actions/checkout@v2
# Install java and maven
- name: Set up JDK 1.8
uses: actions/setup-java@v2
with:
distribution: adopt
java-version: 8
# Test and deploy
- name: Make gradle executable
run: chmod +x gradlew
- name: Test and Deploy with Gradle
run: ./gradlew clean test shadow publish
# Now we store the artifact in the action
- name: Create & Copy artifact
run: mkdir -p ./artifacts && cp build/libs/SuperCoreAPI.jar ./artifacts/
- name: Upload the artifact
uses: actions/upload-artifact@v2
with:
name: SuperCoreAPI
path: ./artifacts/SuperCoreAPI.jar
- name: Deploy Javadoc
uses: JamesIves/github-pages-deploy-action@4.1.5
with:
branch: gh-pages
folder: build/docs/javadoc
clean: true


32 changes: 32 additions & 0 deletions .github/workflows/gradle-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Gradle Test
# Only execute this workflow when a PR is opened or when something is pushed to a the master branch
on:
push
jobs:
testBuilds:
strategy:
fail-fast: false
max-parallel: 4
matrix:
java-version: [8,11,16]
# Setup OS
runs-on: ubuntu-latest
steps:
# Checkout code
- name: Checkout Code
uses: actions/checkout@v2
# Setup java and maven
- name: Set up JDK ${{ matrix.java-version }}
uses: actions/setup-java@v2
with:
distribution: adopt
java-version: ${{ matrix.java-version }}
# Setup executable gradle
- name: Make Gradle executable
run: chmod +x gradlew
# Run gradle test
- name: Run Gradle Test with Java ${{ matrix.java-version }}
run: ./gradlew test
# Test bulding without javadocs
- name: Build Jar with Java ${{ matrix.java-version }}
run: ./gradlew build --no-daemon --no-build-cache --no-scan -x javadoc
21 changes: 0 additions & 21 deletions .github/workflows/maven-build.yml

This file was deleted.

66 changes: 0 additions & 66 deletions .github/workflows/maven.yml

This file was deleted.

8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ buildNumber.properties
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
Expand Down Expand Up @@ -70,4 +70,8 @@ Temporary Items
.project
.settings/
.env
.secrets.env
.secrets.env
.gradle/
build/
bin/
*.pom.xml
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SuperCoreAPI
_The best way to create a plugin_<br>
[![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)
[![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)
[![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)
[![Build Status](https://ci.theprogramsrc.xyz/job/MinecraftPlugins/job/SuperCoreAPI/badge/icon)](https://ci.theprogramsrc.xyz/job/MinecraftPlugins/job/SuperCoreAPI/)
<br>
[![Discord](https://i.imgur.com/J1XhmMd.png)](https://go.theprogramsrc.xyz/discord)
Expand Down
181 changes: 181 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
plugins {
id 'java'
id 'maven-publish'
id 'com.github.johnrengelman.shadow' version '7.1.0'
}

group 'xyz.theprogramsrc'
version '5.3.1-SNAPSHOT'
description 'The best way to create a plugin'

repositories{
mavenCentral()
mavenLocal()

maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
maven { url 'https://repo.theprogramsrc.xyz/repository/maven-public/' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url 'https://oss.sonatype.org/content/repositories/releases/' }
maven { url 'https://oss.sonatype.org/content/groups/public/' }
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url 'https://repo.codemc.org/repository/maven-public' }
maven { url 'https://repo.codemc.org/repository/nms' }
maven { url 'https://jitpack.io' }
}

dependencies {
compileOnly 'org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT'
compileOnly 'org.spigotmc:spigot:1.16.5-R0.1-SNAPSHOT'
compileOnly 'net.md-5:bungeecord-api:1.17-R0.1-SNAPSHOT'

implementation 'com.github.cryptomorin:XSeries:8.4.0'
implementation 'org.slf4j:slf4j-nop:1.7.32'
implementation 'org.slf4j:slf4j-api:1.7.32'
implementation 'commons-io:commons-io:2.11.0'
implementation 'com.google.code.gson:gson:2.8.9'
implementation 'me.carleslc.Simple-YAML:Simple-Yaml:1.7.2'
implementation 'com.zaxxer:HikariCP:3.3.1'
compileOnly 'org.xerial:sqlite-jdbc:3.25.2'
implementation 'org.apache.logging.log4j:log4j-api:2.13.2'
compileOnly 'org.apache.logging.log4j:log4j-core:2.13.2'
implementation 'net.lingala.zip4j:zip4j:2.9.0'
compileOnly 'me.clip:placeholderapi:2.10.9'
implementation 'org.jetbrains:annotations:23.0.0'

testImplementation 'org.junit.jupiter:junit-jupiter:5.7.2'
}

test {
useJUnitPlatform()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
java.withJavadocJar()
java.withSourcesJar()

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}

tasks.withType(Javadoc) {
failOnError false
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}

tasks.withType(Copy) {
duplicatesStrategy = 'include'
exclude 'META-INF/**'
}

tasks.withType(Jar) {
duplicatesStrategy = 'include'
exclude 'META-INF/**'
}

shadowJar {
relocate 'com.google', 'xyz.theprogramsrc.supercoreapi.libs.google'
relocate 'org.apache.commons', 'xyz.theprogramsrc.supercoreapi.libs.apache.commons'
relocate 'com.cryptomorin.xseries', 'xyz.theprogramsrc.supercoreapi.libs.xseries'
relocate 'org.simpleyaml', 'xyz.theprogramsrc.supercoreapi.libs.simpleyaml'
relocate 'org.yaml.snakeyaml', 'xyz.theprogramsrc.supercoreapi.libs.snakeyaml'
relocate 'org.slf4j', 'xyz.theprogramsrc.supercoreapi.libs.slf4j'
relocate 'net.lingala.zip4j', 'xyz.theprogramsrc.supercoreapi.libs.zip4j'
relocate 'org.checkerframework', 'xyz.theprogramsrc.supercoreapi.libs.checkerframework'
relocate 'org.intellij', 'xyz.theprogramsrc.supercoreapi.libs.intellij'
relocate 'org.jetbrains', 'xyz.theprogramsrc.supercoreapi.libs.jetbrains'
relocate 'javax.annotation', 'xyz.theprogramsrc.supercoreapi.libs.annotation'
relocate 'com.zaxxer.hikari', 'xyz.theprogramsrc.supercoreapi.libs.hikari'

archiveBaseName.set('SuperCoreAPI')
archiveClassifier.set('')
archiveVersion.set('')
minimize()
}

configurations {
testImplementation {
extendsFrom(compileOnly)
}
}

sourceSets.main.java.srcDir 'src/main/java'
sourceSets.test.java.srcDir 'src/test/java'

def repos = repositories

publishing {
publications {
mavenJava(MavenPublication) {
artifactId 'SuperCoreAPI'

artifact(tasks["shadowJar"])

pom.withXml {
def root = asNode()

root.appendNode('description', description)
root.appendNode('packaging', 'jar')
root.appendNode('url', 'https://github.com/TheProgramsrc/SuperCoreAPI')

final repositoriesNode = root.appendNode('repositories')
repos.each {
if(it.name == 'MavenLocal'){
return
}
def repositoryNode = repositoriesNode.appendNode('repository')
repositoryNode.appendNode('id', it.name)
repositoryNode.appendNode('url', it.url)
}

final dependenciesNode = root.appendNode('dependencies')
ext.addDependency = { dep, String scope ->
if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
return // ignore invalid dependencies

final dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dep.group)
dependencyNode.appendNode('artifactId', dep.name)
dependencyNode.appendNode('version', dep.version)
dependencyNode.appendNode('scope', scope)

if (!dep.transitive) {
// If this dependency is not transitive, we should force exclude all its dependencies from the POM
final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
exclusionNode.appendNode('groupId', '*')
exclusionNode.appendNode('artifactId', '*')
} else if (!dep.properties.excludeRules.empty) {
// Otherwise add specified exclude rules
final exclusionsNode = dependencyNode.appendNode('exclusions')
dep.properties.excludeRules.each { rule ->
final exclusionNode = exclusionsNode.appendNode('exclusion')
exclusionNode.appendNode('groupId', rule.group ?: '*')
exclusionNode.appendNode('artifactId', rule.module ?: '*')
}
}
}

configurations.compileOnly.getDependencies().each { dep -> addDependency(dep, "provided") }
configurations.implementation.getDependencies().each { dep -> addDependency(dep, "compile") }
configurations.testImplementation.getDependencies().each { dep -> addDependency(dep, "test") }
}
}
}
repositories {
maven {
credentials.username = System.getenv('NEXUS_USERNAME')
credentials.password = System.getenv('NEXUS_PASSWORD')
url = uri(version.contains('-SNAPSHOT') ? 'https://repo.theprogramsrc.xyz/repository/maven-snapshots/' : 'https://repo.theprogramsrc.xyz/repository/maven-releases/')
}
}
}

javadoc {
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}

publish.dependsOn clean, test, jar
Loading