这是当前我的 build.gradle 文件(我删除了不必要的任务引用,这些引用不仅工作得很好,而且与当前问题无关):
buildscript {
repositories {
jcenter()
maven {
name = 'forge'
url = 'https://files.minecraftforge.net/maven'
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'java'
dependencies {
compile('some.library:here:1.2.3') // no extra modules
compile('other.library:here:4.5.6') // multiple modules
}
jar {
from project.configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
目前我有一个系统,它会自动将所有依赖项打包到我的 jar 文件中。我遇到的主要问题是,如果另一个 mod 或文件在我的 mod 之前加载相同的库,我最终会遇到类加载问题,因为我将加载同一个类两次(一个来自另一个 jar,一个来 self 的自己的)。
话虽如此,是否可以避免这样的问题?我该如何真正解释这样的事情呢? forge 是否有一种方法可以控制类加载,使其不会加载重复的库,从而不会出现类冲突?
最佳答案
Minecraft Forge 支持一种称为着色的功能来处理这个问题。当您为 jar 着色时,它会集成到您的 jar 中,但包会被重命名为唯一的名称(以及代码中对它的所有引用)。
来源:https://github.com/MinecraftForge/ForgeGradle/blob/FG_1.2/docs/user-guide/shading.md
关于java - 如何打包 forge mod 的依赖项,同时避免类冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334859/