首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle:FatJar不会包括一些罐子

Gradle:FatJar不会包括一些罐子
EN

Stack Overflow用户
提问于 2021-04-10 18:01:25
回答 1查看 56关注 0票数 0

我们有一个具有这种结构的项目

通用模块源-spring引导工作模块

在worker模块中,我们的build.gradle配置如下

代码语言:javascript
复制
plugins {
id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'


repositories {
  mavenCentral()
}



task fatJar(type: Jar) {
  manifest {
    attributes 'Implementation-Title': 'Gradle Jar File Example',
            'Implementation-Version': version,
            'Main-Class': 'com.worker.worker.EntryPoint'
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
destinationDir(new File(projectDir.parent,"\\libs\\worker\\"))
with jar
}

dependencies {
  compile project(':jTransfer')
  compile project(':datamasking')
  compile project(':common')
  implementation 'com.google.code.gson:gson:2.8.6'
  implementation 'mysql:mysql-connector-java:8.0.19'
  implementation 'com.microsoft.sqlserver:mssql-jdbc'
  implementation 'com.microsoft.sqlserver:mssql-jdbc:8.4.1.jre8'
  testCompile group: 'junit', name: 'junit', version: '4.12'
}

当我运行任务sqlserver:mssql-jdbc时,缺少fatJar。我尝试在{ configurations.compile.collect { it.isDirectory()?it : zipTree(it) }}和"it“从不引用sqlserver jdbc jar。

由于worker模块包含公共模块“编译项目(‘:common’)”,所以我尝试将依赖项放在公共模块中。当我这样做时,在控制台中打印出sqlserver:mssql,当我转到jar归档时sqlserver:mssql jar包含在内,但问题是当我运行java -jar worker时,输出是main not load the main class:...

Tika库也发生了同样的事情。因此,我不确定它是否与那些jar有关,或者我在使用这个模块时做了一些至关重要的事情,可能会有一些冲突。

我试着用这个

代码语言:javascript
复制
 from {
    configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
with jar

发生的情况是,我的jar找不到主类,但当我进入jar归档文件时。我去我的com.worker...我看到有两个EntryPoint.class文件。

因此,简而言之,当我不使用这两行代码时,我的jar可以启动,它有一个EntryPoint.class文件,但是缺少jdbc jar库

EN

回答 1

Stack Overflow用户

发布于 2021-04-10 18:41:23

尝试包含所有compileClasspath和runtimeClasspath。

像这样的任务:

代码语言:javascript
复制
task fatJar(type: Jar) {
    zip64 = true
    manifest {
        attributes 'Main-Class': 'your.main.class'
    }
    archiveBaseName.set("Name")
    archiveVersion.set(versionInt)
    from {
        configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    with jar

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67033050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档