当前位置: 首页 > 知识库问答 >
问题:

如何使用Gradle6.3将本地罐子包含到胖罐子中?

王涵育
2023-03-14

在运行Java8和Gradle6.3的Linux机器上,我需要构建一个由库混合而成的fat jar,一些库来自Maven Central,其他库来自位于存储库根部的本地libs目录,以及我的build.Gradlegradlew:

apply plugin: 'java'

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

task copyLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation "junit:junit:4.12"
}

运行./gradlew clean buildcd build/libs之后,如果我解压缩MyProject.jar可以看到JAR中没有包含任何依赖项。

我的最终目标是使我的项目可执行java-jar myproject.jar。我该怎么解决这个?

共有1个答案

杜阳炎
2023-03-14

这是一个build.gradle,它生成一个包含本地依赖项的fat jar:

plugins {
    id 'java'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

group 'com.mycompany.foo'
version '1.0'

jar {
    archiveBaseName = 'myjarname'
    archiveVersion = '0.1.0'
    manifest {
        attributes(
                'Main-Class': 'com.mycompany.foo.Main'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    testImplementation'org.junit.jupiter:junit-jupiter-api:5.7.2'
    testImplementation 'org.assertj:assertj-core:3.20.2'
}
 类似资料:
  • 因为BouncyCastle jar是经过签名的,在maven assembly plugin中使用带有依赖项的jar将破坏这些签名,我想知道是否有可能创建这种输出: 我的代码和每个依赖项都在一个胖罐子中,但不包括BC罐子 库/子文件夹中的BC jar 我设法排除BC jar在我的脂肪罐使用一个程序集文件看起来像: 现在,我如何告诉maven assembly插件将BC jar作为独立jar放在l

  • 如标题所示,我想知道如何修改以创建一个唯一的,其中包含所有依赖项(包括kotlin lib)。 我在Groovy中找到了这个示例: 但我不知道我怎么能用kotlin写,除了:

  • 我正在用一个胖罐子塑造一个码头工人的形象。我使用插件构建jar,使用构建Docker映像。我对SBT不是很熟悉,我遇到了以下问题。 > 构建映像的步骤之一是复制胖罐子。由于assembly插件在中创建jar,因此我需要知道确切的和jar名称。程序集似乎有一个键,但我不确定如何访问它。我尝试了以下失败的方法。 帮助

  • 问题内容: 假设我的jar包“ com.test.io”中有一个名为test.txt的文件。 我将如何编写一个类来检索此文本文件,然后将内容复制到文件系统上的新文件中? 问题答案: 假设jar在您的类路径中:

  • 在过去的6个月里,我一直在从repl运行我的Clojure应用程序。 也就是说,每当我想运行应用程序时,我都会加载一个clojure repl,然后输入:(加载文件“src/run.clj”)。。。它运行我的应用程序。 然后,clojure加载了我所有的*。clj文件,编译并运行。 我最近换了莱恩。我想“提前编译/打包”我的代码,这样我就可以得到一个带有Main方法的jar,并通过“java…”直

  • 我试图在NetBeans中建立一个胖罐子。当我点击clean时,它显示以下错误: C:\workspace\travel_agency\nbproject\build-impl.xml:63:源资源不存在:C:\workspace\travel_agency\dist\nblibraries.properties 然后单击错误,它会将我发送到build-imple.xml文件中的以下行: