代码之家  ›  专栏  ›  技术社区  ›  user840930

如何用gradle和依赖关系构建jar文件

  •  0
  • user840930  · 技术社区  · 6 年前

    我正在和Gradle建立一个jar文件。这个jar文件正在另一个项目中用作库。但是当项目尝试使用jar文件时,会返回ClassNotFoundException。

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

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

    使用jar的项目似乎在jar中找不到这个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中包含缺少的依赖项?

    1 回复  |  直到 6 年前
        1
  •  0
  •   madhead    6 年前

    通常,您不应该将依赖项打包到已发布的JAR中。最好在中声明它们为依赖项 pom.xml 让你的用户去拿。这只是一个好的做法,应该足够了。

    Gradle Shadow

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

    shadowJar 本例中的任务。出版也很容易:

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