依赖关系没有出现在带Gradle的jar中?

时间:2015-12-12 13:53:02

标签: java gradle dependencies build.gradle

我正在使用这个build.grade。当我运行gradlew build时,它只生成一个包含源文件的jar文件,而不是libs文件夹中的stone.jar。我该怎么做?

enter image description here

apply plugin: 'java'
apply plugin: 'eclipse'

// Source sets in the project, specify source directories
sourceSets {
    main {
        java.srcDir("${projectDir}/src/")
        resources.srcDir("${projectDir}/src/")
    }
}

// Dependencies for the project are stored in the libs directory
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

// Control what goes into the JAR
jar {

    manifest {
        attributes 'Main-Class': 'com.elsea.sublimelauncher.Driver'
    }

    // Include all the classes except the tests
    include("com/elsea/sublimelauncher/**")
}

1 个答案:

答案 0 :(得分:4)

默认情况下,gradle中的jar任务会从项目源文件构建可执行jar文件。它不包含程序所需的任何传递库。它对Web服务器很有用,因为它们通常将所有jar保存在一个特殊的lib文件夹中,但对许多独立程序来说并不好。

您要做的是创建一个胖jar,它将包含单个jar文件中的所有类和资源。 如果您使用Maven,您可以看到像' my-program-v1.0-jar-with-dependcies.jar'

这样的文件

gradle有shadow plugin可以做同样的事情。 Wiki在github上包含有关如何在项目中使用它的所有信息。