diff --git a/.gitignore b/.gitignore index abd2d58..e5d6d4f 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ logs/ *.zip *.tar.gz *.rar +*.gpg # Gradle .gradletasknamecache diff --git a/LICENSE b/LICENSE index 261eeb9..a549278 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2019-2021, Ilya "SpaiR" Prymshyts Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index b4e28f9..b79cd78 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # imgui-java -[![CI Build](https://github.com/SpaiR/imgui-java/workflows/CI%20Build/badge.svg)](https://github.com/SpaiR/imgui-java/actions?query=workflow%3A%22CI+Build%22) -[![binding javadoc](https://javadoc.io/badge2/io.imgui.java/imgui-java-binding/binding_javadoc.svg)](https://javadoc.io/doc/io.imgui.java/imgui-java-binding) -[![app javadoc](https://javadoc.io/badge2/io.imgui.java/imgui-java-app/app_javadoc.svg)](https://javadoc.io/doc/io.imgui.java/imgui-java-app) +[![CI Build](https://github.com/SpaiR/imgui-java/workflows/CI%20Build/badge.svg)](https://github.com/SpaiR/imgui-java/actions?query=workflow%3A%22CI+Build%22) +[![Maven Central](https://img.shields.io/maven-central/v/io.github.spair/imgui-java-binding?logo=apache-maven)](https://search.maven.org/artifact/io.github.spair/imgui-java-binding) +[![binding javadoc](https://javadoc.io/badge2/io.github.spair/imgui-java-binding/javadoc_binding.svg)](https://javadoc.io/doc/io.github.spair/imgui-java-binding) +[![app javadoc](https://javadoc.io/badge2/io.github.spair/imgui-java-app/javadoc_app.svg)](https://javadoc.io/doc/io.github.spair/imgui-java-app) JNI based binding for [Dear ImGui](https://github.com/ocornut/imgui) with no dependencies.
Read official [documentation](https://github.com/ocornut/imgui#usage) and [wiki](https://github.com/ocornut/imgui/wiki) to see how to work with Dear ImGui. @@ -69,7 +70,7 @@ public class Main extends Application { } } ``` -Read `imgui.app.Application` [javadoc](https://javadoc.io/doc/io.imgui.java/imgui-java-app) to understand how it works under the hood. +Read `imgui.app.Application` [javadoc](https://javadoc.io/doc/io.github.spair/imgui-java-app) to understand how it works under the hood. #### Dependencies @@ -78,11 +79,11 @@ Read `imgui.app.Application` [javadoc](https://javadoc.io/doc/io.imgui.java/imgu ``` repositories { - jcenter() + mavenCentral() } dependencies { - implementation "io.imgui.java:imgui-java-app:1.80-1.5.0" + implementation "io.github.spair:imgui-java-app:1.80-1.5.0" } ``` @@ -91,16 +92,9 @@ dependencies { Maven ``` - - - jcenter - https://jcenter.bintray.com/ - - - - io.imgui.java + io.github.spair imgui-java-app 1.80-1.5.0 @@ -129,7 +123,6 @@ Feel free to add other platforms: `imgui-java-natives-windows-x86`, `imgui-java- ``` repositories { - jcenter() mavenCentral() } @@ -146,10 +139,10 @@ dependencies { implementation "org.lwjgl:lwjgl$it::natives-windows" } - implementation "io.imgui.java:imgui-java-binding:$imguiVersion" - implementation "io.imgui.java:imgui-java-lwjgl3:$imguiVersion" + implementation "io.github.spair:imgui-java-binding:$imguiVersion" + implementation "io.github.spair:imgui-java-lwjgl3:$imguiVersion" - implementation "io.imgui.java:imgui-java-natives-windows:$imguiVersion" + implementation "io.github.spair:imgui-java-natives-windows:$imguiVersion" } ``` @@ -158,13 +151,6 @@ dependencies { Maven ``` - - - jcenter - https://jcenter.bintray.com/ - - - 3.2.3 1.80-1.5.0 @@ -212,17 +198,17 @@ dependencies { - io.imgui.java + io.github.spair imgui-java-binding ${imgui.java.version} - io.imgui.java + io.github.spair imgui-java-lwjgl3 ${imgui.java.version} - io.imgui.java + io.github.spair imgui-java-natives-windows ${imgui.java.version} @@ -258,7 +244,7 @@ One important thing is how natives structs work. All of them have a public field By changing the pointer it's possible to use the same Java instance to work with different native structs.
Most of the time you can ignore this fact and just work with objects in a common way. -Read [javadoc](https://javadoc.io/doc/io.imgui.java/imgui-java-binding) and source comments to get more info about how to do specific stuff. +Read [javadoc](https://javadoc.io/doc/io.github.spair/imgui-java-binding) and source comments to get more info about how to do specific stuff. # How to Build Native Libraries ### Windows diff --git a/build.gradle b/build.gradle index 3bc8310..6cd5d2b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,3 @@ -plugins { - id 'com.jfrog.bintray' apply false -} - allprojects { group 'imgui-java' version property('version') diff --git a/imgui-app/build.gradle b/imgui-app/build.gradle index fd27dab..7b460b4 100644 --- a/imgui-app/build.gradle +++ b/imgui-app/build.gradle @@ -2,8 +2,8 @@ plugins { id 'java-library' id 'io.freefair.lombok' version '5.3.0' id 'checkstyle' - id 'com.jfrog.bintray' id 'maven-publish' + id 'signing' } sourceCompatibility = 1.8 @@ -48,25 +48,5 @@ task javadocJar(type: Jar, dependsOn: javadoc) { from javadoc.destinationDir } -publishing { - publications { - MyPublication(MavenPublication) { - from components.java - groupId 'io.imgui.java' - artifactId 'imgui-java-app' - artifact sourcesJar - artifact javadocJar - version property('version') - } - } -} - -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_API_KEY') - publications = ['MyPublication'] - pkg { - repo = 'io.imgui.java' - name = 'imgui-java-app' - } -} +apply from: "$rootDir/publish.gradle" +configurePublishing('imgui-java-app', 'Application wrapper for Dear ImGui') diff --git a/imgui-binding-natives/build.gradle b/imgui-binding-natives/build.gradle index 2106651..f1cee65 100644 --- a/imgui-binding-natives/build.gradle +++ b/imgui-binding-natives/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java' - id 'com.jfrog.bintray' id 'maven-publish' + id 'signing' } task sourcesJar(type: Jar, dependsOn: classes) { @@ -9,23 +9,34 @@ task sourcesJar(type: Jar, dependsOn: classes) { from sourceSets.main.allSource } -def packageName = 'natives-linux' +task javadocJar(type: Jar, dependsOn: javadoc) { + archiveClassifier.set('javadoc') + from javadoc.destinationDir +} + +def packageName = 'imgui-java-natives-linux' +def packageDesc = 'Native binaries for imgui-java binding for 64bit Linux' def libName = 'libimgui-java64.so' if (System.getProperty('deployWin32')) { packageName = 'imgui-java-natives-windows-x86' + packageDesc = 'Native binaries for imgui-java binding for 32bit Windows' libName = 'imgui-java.dll' } else if (System.getProperty('deployWin64')) { packageName = 'imgui-java-natives-windows' + packageDesc = 'Native binaries for imgui-java binding for 64bit Windows' libName = 'imgui-java64.dll' } else if (System.getProperty('deployLinux32')) { packageName = 'imgui-java-natives-linux-x86' + packageDesc = 'Native binaries for imgui-java binding for 32bit Linux' libName = 'libimgui-java.so' } else if (System.getProperty('deployLinux64')) { packageName = 'imgui-java-natives-linux' + packageDesc = 'Native binaries for imgui-java binding for 64bit Linux' libName = 'libimgui-java64.so' } else if (System.getProperty('deployMacOs64')) { packageName = 'imgui-java-natives-macos' + packageDesc = 'Native binaries for imgui-java binding for 64bit MacOS' libName = 'libimgui-java64.dylib' } @@ -36,24 +47,5 @@ jar { } } -publishing { - publications { - MyPublication(MavenPublication) { - from components.java - groupId 'io.imgui.java' - artifactId packageName - artifact sourcesJar - version property('version') - } - } -} - -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_API_KEY') - publications = ['MyPublication'] - pkg { - repo = 'io.imgui.java' - name = packageName - } -} +apply from: "$rootDir/publish.gradle" +configurePublishing(packageName, packageDesc) diff --git a/imgui-binding/build.gradle b/imgui-binding/build.gradle index 3e1ebe4..82251fe 100644 --- a/imgui-binding/build.gradle +++ b/imgui-binding/build.gradle @@ -3,8 +3,8 @@ import imgui.generate.GenerateLibs plugins { id 'java' id 'checkstyle' - id 'com.jfrog.bintray' id 'maven-publish' + id 'signing' } sourceCompatibility = 1.8 @@ -31,25 +31,5 @@ task javadocJar(type: Jar, dependsOn: javadoc) { from javadoc.destinationDir } -publishing { - publications { - MyPublication(MavenPublication) { - from components.java - groupId 'io.imgui.java' - artifactId 'imgui-java-binding' - artifact sourcesJar - artifact javadocJar - version property('version') - } - } -} - -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_API_KEY') - publications = ['MyPublication'] - pkg { - repo = 'io.imgui.java' - name = 'imgui-java-binding' - } -} +apply from: "$rootDir/publish.gradle" +configurePublishing('imgui-java-binding', 'JNI based binding for Dear ImGui') diff --git a/imgui-lwjgl3/build.gradle b/imgui-lwjgl3/build.gradle index 8346d7c..ba222e0 100644 --- a/imgui-lwjgl3/build.gradle +++ b/imgui-lwjgl3/build.gradle @@ -1,26 +1,13 @@ -import org.gradle.internal.os.OperatingSystem - plugins { id 'java' id 'checkstyle' id 'com.jfrog.bintray' id 'maven-publish' + id 'signing' } sourceCompatibility = 1.8 -switch (OperatingSystem.current()) { - case OperatingSystem.LINUX: - project.ext.lwjglNatives = 'natives-linux' - break - case OperatingSystem.WINDOWS: - project.ext.lwjglNatives = 'natives-windows' - break - case OperatingSystem.MAC_OS: - project.ext.lwjglNatives = 'natives-macos' - break -} - dependencies { implementation platform("org.lwjgl:lwjgl-bom:3.2.3") @@ -36,24 +23,10 @@ task sourcesJar(type: Jar, dependsOn: classes) { from sourceSets.main.allSource } -publishing { - publications { - MyPublication(MavenPublication) { - from components.java - groupId 'io.imgui.java' - artifactId 'imgui-java-lwjgl3' - artifact sourcesJar - version property('version') - } - } +task javadocJar(type: Jar, dependsOn: javadoc) { + archiveClassifier.set('javadoc') + from javadoc.destinationDir } -bintray { - user = System.getenv('BINTRAY_USER') - key = System.getenv('BINTRAY_API_KEY') - publications = ['MyPublication'] - pkg { - repo = 'io.imgui.java' - name = 'imgui-java-lwjgl3' - } -} +apply from: "$rootDir/publish.gradle" +configurePublishing('imgui-java-lwjgl3', 'Backend LWJGL3 implementation for imgui-java') diff --git a/publish.gradle b/publish.gradle new file mode 100644 index 0000000..15ebb4d --- /dev/null +++ b/publish.gradle @@ -0,0 +1,54 @@ +ext.configurePublishing = { packageName, packageDesc -> + publishing { + repositories { + maven { + name = 'MavenCentral' + def releasesRepoUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2' + def snapshotsRepoUrl = 'https://oss.sonatype.org/content/repositories/snapshots' + url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl + credentials { + username = findProperty('nexusUpdId') ?: '' + password = findProperty('nexusUpdPass') ?: '' + } + } + } + publications { + mavenJava(MavenPublication) { + groupId = 'io.github.spair' + artifactId = packageName + version = property('version') + + from components.java + artifact sourcesJar + artifact javadocJar + + pom { + name = packageName + description = packageDesc + url = 'https://github.com/SpaiR/imgui-java' + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = 'SpaiR' + name = 'Ilya Prymshyts' + email = 'klimbetoo@gmail.com' + } + } + scm { + connection = 'scm:git:https://github.com/SpaiR/imgui-java.git' + developerConnection = 'scm:git:https://github.com/SpaiR/imgui-java.git' + url = 'https://github.com/SpaiR/imgui-java.git' + } + } + } + } + } + signing { + sign publishing.publications.mavenJava + } +}