diff --git a/build.gradle b/build.gradle
index 1d0d75424..784e55753 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,6 @@ println("jadx version: ${jadxVersion}")
allprojects {
apply plugin: 'java'
apply plugin: 'checkstyle'
- apply plugin: 'maven-publish'
version = jadxVersion
@@ -27,14 +26,6 @@ allprojects {
}
}
- publishing {
- publications {
- mavenJava(MavenPublication) {
- from components.java
- }
- }
- }
-
dependencies {
implementation 'org.slf4j:slf4j-api:1.7.32'
compileOnly 'org.jetbrains:annotations:23.0.0'
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
new file mode 100644
index 000000000..063791b4c
--- /dev/null
+++ b/buildSrc/build.gradle
@@ -0,0 +1,3 @@
+plugins {
+ id 'groovy-gradle-plugin'
+}
diff --git a/buildSrc/src/main/groovy/jadx-library.gradle b/buildSrc/src/main/groovy/jadx-library.gradle
new file mode 100644
index 000000000..161f98805
--- /dev/null
+++ b/buildSrc/src/main/groovy/jadx-library.gradle
@@ -0,0 +1,76 @@
+plugins {
+ id 'java-library'
+ id 'maven-publish'
+ id 'signing'
+}
+
+
+group = 'io.github.skylot'
+version = jadxVersion
+
+java {
+ withJavadocJar()
+ withSourcesJar()
+}
+
+publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ artifactId = project.name
+ from components.java
+ versionMapping {
+ usage('java-api') {
+ fromResolutionOf('runtimeClasspath')
+ }
+ usage('java-runtime') {
+ fromResolutionResult()
+ }
+ }
+ pom {
+ name = project.name
+ description = 'Dex to Java decompiler'
+ url = 'https://github.com/skylot/jadx'
+ licenses {
+ license {
+ name = 'The Apache License, Version 2.0'
+ url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ }
+ }
+ developers {
+ developer {
+ id = 'skylot'
+ name = 'Skylot'
+ email = 'skylot@gmail.com'
+ url = 'https://github.com/skylot'
+ }
+ }
+ scm {
+ connection = 'scm:git:git://github.com/skylot/jadx.git'
+ developerConnection = 'scm:git:ssh://github.com:skylot/jadx.git'
+ url = 'https://github.com/skylot/jadx'
+ }
+ }
+ }
+ }
+ repositories {
+ maven {
+ def releasesRepoUrl = uri('https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/')
+ def snapshotsRepoUrl = uri('https://s01.oss.sonatype.org/content/repositories/snapshots/')
+ url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
+ credentials {
+ username = project.properties['ossrhUser'].toString()
+ password = project.properties['ossrhPassword'].toString()
+ }
+ }
+ }
+}
+
+signing {
+ sign publishing.publications.mavenJava
+}
+
+javadoc {
+ if (JavaVersion.current().isJava9Compatible()) {
+ options.addBooleanOption('html5', true)
+ }
+}
diff --git a/jadx-core/build.gradle b/jadx-core/build.gradle
index 4f7c48dc2..4b05c2eb7 100644
--- a/jadx-core/build.gradle
+++ b/jadx-core/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
dependencies {
diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java
index cf80617e9..6f542bf28 100644
--- a/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java
+++ b/jadx-core/src/main/java/jadx/core/dex/nodes/parser/SignatureParser.java
@@ -251,8 +251,8 @@ public class SignatureParser {
/**
* Map of generic types names to extends classes.
- *
- * Example: ""
+ *
+ * Example: "<T:Ljava/lang/Exception;:Ljava/lang/Object;>"
*/
@SuppressWarnings("ConditionalBreakInInfiniteLoop")
public List consumeGenericTypeParameters() {
diff --git a/jadx-core/src/main/java/jadx/core/utils/android/DataInputDelegate.java b/jadx-core/src/main/java/jadx/core/utils/android/DataInputDelegate.java
index 3b64f59ec..7a7ad7d5e 100644
--- a/jadx-core/src/main/java/jadx/core/utils/android/DataInputDelegate.java
+++ b/jadx-core/src/main/java/jadx/core/utils/android/DataInputDelegate.java
@@ -20,7 +20,7 @@ import java.io.DataInput;
import java.io.IOException;
/**
- * @author Ryszard Wiśniewski
+ * @author Ryszard Wiśniewski "brut.alll@gmail.com"
*/
public abstract class DataInputDelegate implements DataInput {
protected final DataInput mDelegate;
diff --git a/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java b/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java
index 351fc0c82..a59cc9430 100644
--- a/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java
+++ b/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java
@@ -22,7 +22,7 @@ import java.io.IOException;
import java.io.InputStream;
/**
- * @author Ryszard Wiśniewski
+ * @author Ryszard Wiśniewski "brut.alll@gmail.com"
*/
public class ExtDataInput extends DataInputDelegate {
public ExtDataInput(InputStream in) {
diff --git a/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java b/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java
index 3c0c5db85..1c674aac8 100644
--- a/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java
+++ b/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java
@@ -27,7 +27,7 @@ import javax.imageio.ImageIO;
import jadx.core.utils.exceptions.JadxRuntimeException;
/**
- * @author Ryszard Wiśniewski
+ * @author Ryszard Wiśniewski "brut.alll@gmail.com"
*/
public class Res9patchStreamDecoder {
diff --git a/jadx-plugins/jadx-dex-input/build.gradle b/jadx-plugins/jadx-dex-input/build.gradle
index 8c1349b5e..7fecd4dd4 100644
--- a/jadx-plugins/jadx-dex-input/build.gradle
+++ b/jadx-plugins/jadx-dex-input/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
dependencies {
diff --git a/jadx-plugins/jadx-java-convert/build.gradle b/jadx-plugins/jadx-java-convert/build.gradle
index d9faee563..6e8078b07 100644
--- a/jadx-plugins/jadx-java-convert/build.gradle
+++ b/jadx-plugins/jadx-java-convert/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
dependencies {
diff --git a/jadx-plugins/jadx-java-input/build.gradle b/jadx-plugins/jadx-java-input/build.gradle
index cd943d399..cd5fc4ced 100644
--- a/jadx-plugins/jadx-java-input/build.gradle
+++ b/jadx-plugins/jadx-java-input/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
dependencies {
diff --git a/jadx-plugins/jadx-plugins-api/build.gradle b/jadx-plugins/jadx-plugins-api/build.gradle
index 97734ac60..c4c8599f4 100644
--- a/jadx-plugins/jadx-plugins-api/build.gradle
+++ b/jadx-plugins/jadx-plugins-api/build.gradle
@@ -1,3 +1,3 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
diff --git a/jadx-plugins/jadx-raung-input/build.gradle b/jadx-plugins/jadx-raung-input/build.gradle
index b9a304f2b..9e8682f25 100644
--- a/jadx-plugins/jadx-raung-input/build.gradle
+++ b/jadx-plugins/jadx-raung-input/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
dependencies {
diff --git a/jadx-plugins/jadx-smali-input/build.gradle b/jadx-plugins/jadx-smali-input/build.gradle
index fb3b0589d..81e63f552 100644
--- a/jadx-plugins/jadx-smali-input/build.gradle
+++ b/jadx-plugins/jadx-smali-input/build.gradle
@@ -1,5 +1,5 @@
plugins {
- id 'java-library'
+ id 'jadx-library'
}
dependencies {