【问题标题】:Gradle error when creating a fat jar创建胖罐时出现 Gradle 错误
【发布时间】:2015-10-14 11:53:53
【问题描述】:

我正在尝试使用 Gradle 创建一个胖罐。我遇到了一个类似于raised against Gradle 的错误。不幸的是,我对 Gradle 和 Groovy 的了解不够,无法想出一个创造性的解决方法,所以我希望这里有人能够提供帮助。我在网上搜索了各种解决方法都无济于事:(

我的特殊冲突是与 Apache Storm 依赖项:

...
Caused by: org.gradle.api.GradleException: Could not copy zip entry /Users/DefaultUser/.gradle/caches/modules-2/files-2.1/org.apache.storm/storm-core/0.10.0-beta1/c3ba45e5ba616335c9f4be12317a8ebf2d2f17ba/storm-core-0.10.0-beta1.jar!META-INF/license/LICENSE.base64.txt to '/Users/DefaultUser/Projects/streams/build/tmp/expandedArchives/storm-core-0.10.0-beta1.jar_6i3o5dzb4lwfvasqr1cg4giqy/META-INF/license/LICENSE.base64.txt'.
    at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:79)
    at org.gradle.api.internal.file.archive.ZipFileTree$DetailsImpl.getFile(ZipFileTree.java:125)
    at org.gradle.api.internal.file.AbstractFileTree$1.visitFile(AbstractFileTree.java:39)
    at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTree$1.visitFile(AbstractFileTree.java:145)
    at org.gradle.api.internal.file.archive.ZipFileTree.visit(ZipFileTree.java:90)
    ... 50 more
Caused by: org.gradle.api.UncheckedIOException: Cannot create directory '/Users/DefaultUser/Projects/streams/build/tmp/expandedArchives/storm-core-0.10.0-beta1.jar_6i3o5dzb4lwfvasqr1cg4giqy/META-INF/license' as it already exists, but is not a directory
    at org.gradle.util.GFileUtils.mkdirs(GFileUtils.java:261)
    at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:73)
    ... 54 more

我创建fat jar的gradle代码如下:

jar {

    manifest {
        attributes 'Main-Class': mainClassName,
                'Implementation-Version': version
    }

    from {
        configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

【问题讨论】:

    标签: gradle jar apache-storm


    【解决方案1】:

    在搜索了一整天寻找解决方法后,我在发布问题 5 分钟后找到了一个...

    这不是一个理想的解决方法,因为它不包括许可证,但是我通过以下方式让它工作。如果有人有更好的解决方案,我会非常感兴趣。

    jar {
    
        from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {
            exclude "META-INF/*.SF"
            exclude "META-INF/LICENSE"
        }
    
        manifest {
            attributes 'Main-Class': mainClassName,
                    'Implementation-Version': version
        }
    
    }
    

    【讨论】:

    • 在 2018 年仍然为我工作
    【解决方案2】:

    我的 build.gradle 用于构建 fat jar:

    https://gist.github.com/Antowka/cab25f17cd704eaefdc8

    【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2015-09-08
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多