Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从gradle项目依赖项中排除META-INF?_Java_Gradle_Gradle Dependencies_Spongeapi - Fatal编程技术网

Java 如何从gradle项目依赖项中排除META-INF?

Java 如何从gradle项目依赖项中排除META-INF?,java,gradle,gradle-dependencies,spongeapi,Java,Gradle,Gradle Dependencies,Spongeapi,我有两个兄弟项目ProjectA和ProjectB,它们都在父项目下。父项目基本上只是一个文件夹,并且对两个子项目都有公共build.gradle设置 ProjectB在编译时依赖于ProjectA中的代码,但ProjectA是单独构建的,并且 包含META-INF目录。构建ProjectB时,我得到一个java.lang.SecurityException:清单主属性的签名文件摘要无效。正如您在下面看到的,我已经从ProjectB中删除了zipTree调用,并且不确定如何解决此问题。非常感谢您

我有两个兄弟项目ProjectA和ProjectB,它们都在父项目下。父项目基本上只是一个文件夹,并且对两个子项目都有公共build.gradle设置

ProjectB在编译时依赖于ProjectA中的代码,但ProjectA是单独构建的,并且 包含META-INF目录。构建ProjectB时,我得到一个java.lang.SecurityException:清单主属性的签名文件摘要无效。正如您在下面看到的,我已经从ProjectB中删除了zipTree调用,并且不确定如何解决此问题。非常感谢您的帮助

请记住,这两个项目都必须构建自己的JAR,ProjectA必须为下面所示的两个依赖项着色

父设置.gradle:

rootProject.name = "Parent"
include ":ProjectA", ":ProjectB"
父build.gradle:

allprojects {
    buildscript {
        repositories {
            jcenter()
            maven {
                name = "forge"
                url = "https://files.minecraftforge.net/maven"
            }
            maven {
                name = "sponge"
                url = "https://repo.spongepowered.org/maven"
            }
        }
        dependencies {
            classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT"
            classpath "org.spongepowered:mixingradle:0.6-SNAPSHOT"
        }
    }

    repositories {
        mavenCentral()
        maven {
            name = 'spongepowered-repo'
            url = 'https://repo.spongepowered.org/maven'
        }
        maven {
            name = 'jitpack-repo'
            url = 'https://jitpack.io'
        }
    }

    configurations {
        shade
        compile.extendsFrom(shade)
    }
}
apply plugin: "net.minecraftforge.gradle.forge"
apply plugin: 'org.spongepowered.mixin'

version = project.modVersion
group = project.modGroup

minecraft {
    version = "${project.mcVersion}-${project.forgeVersion}"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = project.mcpVersion
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace("@MOD_VERSION@", project.modVersion)
    replace("@MOD_ID@", project.modId)
    replace("@MOD_NAME@", project.modBaseName)
    replace("@MOD_ACCEPTED@", "[${project.modAcceptedVersions}]")
    replaceIn "${project.modBaseName}.java"
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.main, "mixins.${project.modId}.refmap.json"
}

dependencies {
    shade("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }

    shade group: 'org.yaml', name: 'snakeyaml', version: '1.6'
}

jar {
    from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) })
    //from (configurations.provided.collect { entry -> zipTree(entry) })

    manifest {
        attributes(
                'FMLAT': "${project.modId}_at.cfg",
                'MixinConfigs': "mixins.${project.modId}.json",
                'TweakOrder': '0',
                'TweakClass': "${project.modGroup}.${project.modId}.tweaker.${project.modBaseName}Tweaker",
                'Main-Class': 'OpenErrorMessage'
        )
    }
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include "**/*.info"
        include "**/*.properties"

        // replace version and mcversion
        expand "version": project.version, "mcversion": project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "**/*.info"
        exclude "**/*.properties"
    }
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'org.spongepowered.mixin'

version = project.modVersion
group = project.modGroup

minecraft {
    version = "${project.mcVersion}-${project.forgeVersion}"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = project.mcpVersion
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace("@MOD_VERSION@", project.modVersion)
    replace("@MOD_ID@", project.modId)
    replace("@MOD_NAME@", project.modBaseName)
    replace("@MOD_ACCEPTED@", "[${project.modAcceptedVersions}]")
    replaceIn "${project.modBaseName}.java"
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.main, "mixins.${project.modId}.refmap.json"
}

dependencies {
    /*shade("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }*/

    compile project(":SkyblockRecords")
}

jar {
    archiveName = "${project.modBaseName}-${project.version}-for-MC-1.12.x.jar"

    /*from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }) {
        exclude 'META-INF', 'META-INF/**'
    }*/

    manifest {
        attributes(
                'FMLAT': "${project.modId}_at.cfg",
                'MixinConfigs': "mixins.${project.modId}.json",
                'TweakOrder': '0',
                'TweakClass': "${project.modGroup}.${project.modId}.tweaker.${project.modBaseName}Tweaker",
                'Main-Class': 'OpenErrorMessage'
        )
    }
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include "**/*.info"
        include "**/*.properties"

        // replace version and mcversion
        expand "version": project.version, "mcversion": project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "**/*.info"
        exclude "**/*.properties"
    }
}
ProjectA build.gradle:

allprojects {
    buildscript {
        repositories {
            jcenter()
            maven {
                name = "forge"
                url = "https://files.minecraftforge.net/maven"
            }
            maven {
                name = "sponge"
                url = "https://repo.spongepowered.org/maven"
            }
        }
        dependencies {
            classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT"
            classpath "org.spongepowered:mixingradle:0.6-SNAPSHOT"
        }
    }

    repositories {
        mavenCentral()
        maven {
            name = 'spongepowered-repo'
            url = 'https://repo.spongepowered.org/maven'
        }
        maven {
            name = 'jitpack-repo'
            url = 'https://jitpack.io'
        }
    }

    configurations {
        shade
        compile.extendsFrom(shade)
    }
}
apply plugin: "net.minecraftforge.gradle.forge"
apply plugin: 'org.spongepowered.mixin'

version = project.modVersion
group = project.modGroup

minecraft {
    version = "${project.mcVersion}-${project.forgeVersion}"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = project.mcpVersion
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace("@MOD_VERSION@", project.modVersion)
    replace("@MOD_ID@", project.modId)
    replace("@MOD_NAME@", project.modBaseName)
    replace("@MOD_ACCEPTED@", "[${project.modAcceptedVersions}]")
    replaceIn "${project.modBaseName}.java"
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.main, "mixins.${project.modId}.refmap.json"
}

dependencies {
    shade("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }

    shade group: 'org.yaml', name: 'snakeyaml', version: '1.6'
}

jar {
    from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) })
    //from (configurations.provided.collect { entry -> zipTree(entry) })

    manifest {
        attributes(
                'FMLAT': "${project.modId}_at.cfg",
                'MixinConfigs': "mixins.${project.modId}.json",
                'TweakOrder': '0',
                'TweakClass': "${project.modGroup}.${project.modId}.tweaker.${project.modBaseName}Tweaker",
                'Main-Class': 'OpenErrorMessage'
        )
    }
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include "**/*.info"
        include "**/*.properties"

        // replace version and mcversion
        expand "version": project.version, "mcversion": project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "**/*.info"
        exclude "**/*.properties"
    }
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'org.spongepowered.mixin'

version = project.modVersion
group = project.modGroup

minecraft {
    version = "${project.mcVersion}-${project.forgeVersion}"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = project.mcpVersion
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace("@MOD_VERSION@", project.modVersion)
    replace("@MOD_ID@", project.modId)
    replace("@MOD_NAME@", project.modBaseName)
    replace("@MOD_ACCEPTED@", "[${project.modAcceptedVersions}]")
    replaceIn "${project.modBaseName}.java"
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.main, "mixins.${project.modId}.refmap.json"
}

dependencies {
    /*shade("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }*/

    compile project(":SkyblockRecords")
}

jar {
    archiveName = "${project.modBaseName}-${project.version}-for-MC-1.12.x.jar"

    /*from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }) {
        exclude 'META-INF', 'META-INF/**'
    }*/

    manifest {
        attributes(
                'FMLAT': "${project.modId}_at.cfg",
                'MixinConfigs': "mixins.${project.modId}.json",
                'TweakOrder': '0',
                'TweakClass': "${project.modGroup}.${project.modId}.tweaker.${project.modBaseName}Tweaker",
                'Main-Class': 'OpenErrorMessage'
        )
    }
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include "**/*.info"
        include "**/*.properties"

        // replace version and mcversion
        expand "version": project.version, "mcversion": project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "**/*.info"
        exclude "**/*.properties"
    }
}
ProjectB build.gradle:

allprojects {
    buildscript {
        repositories {
            jcenter()
            maven {
                name = "forge"
                url = "https://files.minecraftforge.net/maven"
            }
            maven {
                name = "sponge"
                url = "https://repo.spongepowered.org/maven"
            }
        }
        dependencies {
            classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT"
            classpath "org.spongepowered:mixingradle:0.6-SNAPSHOT"
        }
    }

    repositories {
        mavenCentral()
        maven {
            name = 'spongepowered-repo'
            url = 'https://repo.spongepowered.org/maven'
        }
        maven {
            name = 'jitpack-repo'
            url = 'https://jitpack.io'
        }
    }

    configurations {
        shade
        compile.extendsFrom(shade)
    }
}
apply plugin: "net.minecraftforge.gradle.forge"
apply plugin: 'org.spongepowered.mixin'

version = project.modVersion
group = project.modGroup

minecraft {
    version = "${project.mcVersion}-${project.forgeVersion}"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = project.mcpVersion
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace("@MOD_VERSION@", project.modVersion)
    replace("@MOD_ID@", project.modId)
    replace("@MOD_NAME@", project.modBaseName)
    replace("@MOD_ACCEPTED@", "[${project.modAcceptedVersions}]")
    replaceIn "${project.modBaseName}.java"
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.main, "mixins.${project.modId}.refmap.json"
}

dependencies {
    shade("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }

    shade group: 'org.yaml', name: 'snakeyaml', version: '1.6'
}

jar {
    from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) })
    //from (configurations.provided.collect { entry -> zipTree(entry) })

    manifest {
        attributes(
                'FMLAT': "${project.modId}_at.cfg",
                'MixinConfigs': "mixins.${project.modId}.json",
                'TweakOrder': '0',
                'TweakClass': "${project.modGroup}.${project.modId}.tweaker.${project.modBaseName}Tweaker",
                'Main-Class': 'OpenErrorMessage'
        )
    }
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include "**/*.info"
        include "**/*.properties"

        // replace version and mcversion
        expand "version": project.version, "mcversion": project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "**/*.info"
        exclude "**/*.properties"
    }
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'org.spongepowered.mixin'

version = project.modVersion
group = project.modGroup

minecraft {
    version = "${project.mcVersion}-${project.forgeVersion}"
    runDir = "run"

    // the mappings can be changed at any time, and must be in the following format.
    // snapshot_YYYYMMDD   snapshot are built nightly.
    // stable_#            stables are built at the discretion of the MCP team.
    // Use non-default mappings at your own risk. they may not always work.
    // simply re-run your setup task after changing the mappings to update your workspace.
    mappings = project.mcpVersion
    // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.

    replace("@MOD_VERSION@", project.modVersion)
    replace("@MOD_ID@", project.modId)
    replace("@MOD_NAME@", project.modBaseName)
    replace("@MOD_ACCEPTED@", "[${project.modAcceptedVersions}]")
    replaceIn "${project.modBaseName}.java"
}

mixin {
    defaultObfuscationEnv searge
    add sourceSets.main, "mixins.${project.modId}.refmap.json"
}

dependencies {
    /*shade("org.spongepowered:mixin:0.7.11-SNAPSHOT") {
        // Mixin includes a lot of dependencies that are too up-to-date
        exclude module: 'launchwrapper'
        exclude module: 'guava'
        exclude module: 'gson'
        exclude module: 'commons-io'
        exclude module: 'log4j-core'
    }*/

    compile project(":SkyblockRecords")
}

jar {
    archiveName = "${project.modBaseName}-${project.version}-for-MC-1.12.x.jar"

    /*from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }) {
        exclude 'META-INF', 'META-INF/**'
    }*/

    manifest {
        attributes(
                'FMLAT': "${project.modId}_at.cfg",
                'MixinConfigs': "mixins.${project.modId}.json",
                'TweakOrder': '0',
                'TweakClass': "${project.modGroup}.${project.modId}.tweaker.${project.modBaseName}Tweaker",
                'Main-Class': 'OpenErrorMessage'
        )
    }
}

processResources {
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include "**/*.info"
        include "**/*.properties"

        // replace version and mcversion
        expand "version": project.version, "mcversion": project.minecraft.version
    }

    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude "**/*.info"
        exclude "**/*.properties"
    }
}

多亏了比约恩·维斯特对这个问题的评论,我解决了这个问题。答案是将jar的对方付费呼叫转移到ProjectA

// Move this to the jar section of ProjectA
from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }) {
    exclude 'META-INF', 'META-INF/**'
}

多亏了比约恩·维斯特对这个问题的评论,我解决了这个问题。答案是将jar的对方付费呼叫转移到ProjectA

// Move this to the jar section of ProjectA
from(configurations.shade.collect { it.isDirectory() ? it : zipTree(it) }) {
    exclude 'META-INF', 'META-INF/**'
}

代码/*fromconfigurations.shade。。。您在B中注释掉的内容确实应该将META-INF文件夹从任何着色依赖项中排除。您是否也尝试过在一个@BjørnVester中进行着色处理?我没有在ProjectA中尝试使用排除参数。刚试过这个,效果很好。谢谢,我会回答我自己的问题。代码/*fromconfigurations.shade。。。您在B中注释掉的内容确实应该将META-INF文件夹从任何着色依赖项中排除。您是否也尝试过在一个@BjørnVester中进行着色处理?我没有在ProjectA中尝试使用排除参数。刚试过这个,效果很好。谢谢,我会回答我自己的问题。