diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..0d40707 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,23 @@ +name: Publish + +on: + push: + branches: [ "master" ] + +permissions: + contents: read + +jobs: + build: + uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@main + with: + java: 8 + gradle_tasks: "publish" + artifact_name: "securemodules" + secrets: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }} + PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }} + PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }} + MAVEN_USER: ${{ secrets.MAVEN_USER }} + MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} \ No newline at end of file diff --git a/build.gradle b/build.gradle index a932fd1..bc53863 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,5 @@ +import net.minecraftforge.gradleutils.PomUtils + plugins { id 'java-library' id 'maven-publish' @@ -8,8 +10,8 @@ plugins { } group = 'net.minecraftforge' -version = gradleutils.getTagOffsetVersion() -logger.lifecycle('Version: ' + version) +version = gradleutils.tagOffsetVersion +print("Version: $version") java { toolchain.languageVersion = JavaLanguageVersion.of(16) @@ -38,12 +40,12 @@ changelog { jar { manifest { attributes([ - 'Specification-Title': 'securemodules', - 'Specification-Vendor': 'forge', - 'Specification-Version': gradleutils.gitInfo.tag, - 'Implementation-Title': project.name, + 'Specification-Title': 'SecureModules', + 'Specification-Vendor': 'Forge Development LLC', + 'Specification-Version': gradleutils.gitInfo.tag, + 'Implementation-Title': 'SecureModules', 'Implementation-Version': project.version, - 'Implementation-Vendor':'forge' + 'Implementation-Vendor': 'Forge Development LLC' ] as LinkedHashMap) } } @@ -53,17 +55,21 @@ license { } publishing { - publications { - mavenJava(MavenPublication) { - from components.java - pom { - name = 'Secure Modular handler' - description = 'Making the Java modular system provide security information' + publications.register('mavenJava', MavenPublication) { + from components.java + artifactId = 'securemodules' + pom { + name = 'Secure Modular handler' + description = 'Making the Java modular system provide security information' + license PomUtils.Licenses.LGPLv2_1 + developers { + developer PomUtils.Developers.cpw + developer PomUtils.Developers.LexManos } } } repositories { - maven gradleutils.getPublishingForgeMaven() + maven gradleutils.publishingForgeMaven } } diff --git a/settings.gradle b/settings.gradle index d6cbeec..eff9609 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,7 +12,7 @@ plugins { dependencyResolutionManagement { versionCatalogs { libs { - version('asm', '9.3') + version('asm', '9.6') library('asm', 'org.ow2.asm', 'asm' ).versionRef('asm') library('asm-tree', 'org.ow2.asm', 'asm-tree' ).versionRef('asm') library('asm-commons', 'org.ow2.asm', 'asm-commons').versionRef('asm') @@ -22,13 +22,13 @@ dependencyResolutionManagement { library('junit-api', 'org.junit.jupiter', 'junit-jupiter-api').versionRef('junit') library('junit-engine', 'org.junit.jupiter', 'junit-jupiter-engine').versionRef('junit') library('junit-platform-launcher', 'org.junit.platform:junit-platform-launcher:1.10.0') - bundle('junit-runtime', ['junit-engine', 'junit-platform-launcher']) // Force Gradle to load the JUnit Platform Launcher from the module-path + bundle('junit-runtime', ['junit-engine', 'junit-platform-launcher']) - library('unsafe', 'net.minecraftforge:unsafe:0.9.0') + library('unsafe', 'net.minecraftforge:unsafe:0.9.2') } } } -rootProject.name = 'securemodules' +rootProject.name = 'SecureModules' include 'sm-jmh' include 'sm-test' \ No newline at end of file diff --git a/src/main/java/cpw/mods/cl/ModuleClassLoader.java b/src/main/java/cpw/mods/cl/ModuleClassLoader.java index eb36a2e..3caa3f9 100644 --- a/src/main/java/cpw/mods/cl/ModuleClassLoader.java +++ b/src/main/java/cpw/mods/cl/ModuleClassLoader.java @@ -25,7 +25,7 @@ public class ModuleClassLoader extends SecureModuleClassLoader { * API Ment for modders to consume * ====================================================================== */ - public ModuleClassLoader(String name, Configuration config, @Deprecated List parentLayers) { + public ModuleClassLoader(String name, Configuration config, List parentLayers) { super(name, config, parentLayers, null); } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 1f8b927..d67b088 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -16,9 +16,11 @@ requires org.objectweb.asm; requires org.objectweb.asm.tree; requires java.base; + + requires jdk.unsupported; requires net.minecraftforge.unsafe; - // TODO: Move UnionFS out into its own project + // TODO: [SM] Move UnionFS out into its own project provides java.nio.file.spi.FileSystemProvider with cpw.mods.niofs.union.UnionFileSystemProvider; diff --git a/src/main/java/net/minecraftforge/securemodules/SecureModuleClassLoader.java b/src/main/java/net/minecraftforge/securemodules/SecureModuleClassLoader.java index f890c24..fb769f0 100644 --- a/src/main/java/net/minecraftforge/securemodules/SecureModuleClassLoader.java +++ b/src/main/java/net/minecraftforge/securemodules/SecureModuleClassLoader.java @@ -29,6 +29,7 @@ import java.util.stream.Stream; public class SecureModuleClassLoader extends SecureClassLoader { + @SuppressWarnings("unused") private static void log(String message) { System.out.println(message); } // TODO: [SM] Introduce proper logging framework static { @@ -53,7 +54,6 @@ private static void setupModularURLHandler() { private final Map moduleReaders = new ConcurrentHashMap<>(); private final List allParentLoaders; - @Deprecated(forRemoval = true) protected ClassLoader fallbackClassLoader = ClassLoader.getPlatformClassLoader(); public SecureModuleClassLoader(String name, Configuration config, List parentLayers) { @@ -86,18 +86,18 @@ public SecureModuleClassLoader(String name, Configuration config, List loadClass(String name, boolean resolve) throws ClassNotFoundE var parent = this.packageToParentLoader.get(pkg); if (parent == null) parent = fallbackClassLoader; - c = parent.loadClass(name); + + if (parent == null) + c = super.loadClass(name, false); + else + c = parent.loadClass(name); } } }