簡體   English   中英

如何使用gradle構建jar文件

[英]How to build jar file with gradle with dependencies

我正在用Gradle構建一個jar文件。 該jar文件被用作另一個項目中的庫。 但是,當項目嘗試使用jar文件時,將返回ClassNotFoundException。

  Caused by: java.lang.NoClassDefFoundError: com/auth0/jwt/JWT

我已經在構建jar的gradle文件中包含了jwt庫:

  compile group: 'com.auth0', name: 'java-jwt', version: '3.4.0'

使用jar的項目似乎無法在jar中找到此jar依賴項。

我用gradle命令構建了jar:

 task fatJar(type: Jar) {
     manifest {
         attributes 'Implementation-Title': 'Jar File creation',
            'Implementation-Version': version,
            'Main-Class': 'com.group.me.name.MyJarClass'
     }
     baseName = project.name + '-all'
     from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
     with jar
     exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
  }

如何在jar中包含缺少的依賴項?

通常,您不應將依賴項打包在已發布的JAR中。 最好在pom.xml中將它們聲明為依賴項,然后讓您的JAR用戶獲取它們。 這只是一個好習慣,應該足夠了。

如果還不夠,請使用Gradle Shadow

plugins {
    id 'com.github.johnrengelman.shadow' version '4.0.2'
}

在這種情況下,Fat JAR是用shadowJar任務生成的。 發布也很容易:

publishing {
    publications {
        shadow(MavenPublication) { publication ->
            project.shadow.component(publication)
        }
    }
    repositories {
        maven {
            url "http://your.repo"
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM