将外部jar捆绑到输出jar文件的依赖项中

时间:2014-06-30 08:08:07

标签: gradle

我有以下build.gradle文件。我的一个依赖是json-simple。然而, 当我创建jar文件中未包含的jar HttpSnapClient时。

apply plugin: 'java'         
apply plugin: 'application'  
apply plugin: 'groovy'       

mainClassName = 'com.sunsystem.HttpSnapClient.SnapClient'

repositories {
   mavenLocal()
   mavenCentral()
}

dependencies {
   compile "com.googlecode.json-simple:json-simple:1.1.1"
   testCompile "org.codehaus.groovy:groovy:2.3.3"
   testCompile "org.spockframework:spock-core:0.7-groovy-2.0"
}

jar {
    baseName = 'HttpSnapclient'
    version ='1.0.0'
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.12'
}

我想将json-simple.jar捆绑到我的HttpSnapClient.jar中,以便我使用此HttpSnapClient.jar的应用已包含json-simple.jar

当我运行以下命令jar tvf HttpSnapclient-1.0.0.jar

     0 Mon Jun 30 14:37:56 ICT 2014 META-INF/
    25 Mon Jun 30 14:37:56 ICT 2014 META-INF/MANIFEST.MF
   294 Mon Jun 30 14:37:56 ICT 2014 WebServiceResponseCodes.class
     0 Mon Jun 30 14:37:56 ICT 2014 com/
     0 Mon Jun 30 14:37:56 ICT 2014 com/sunsystem/
     0 Mon Jun 30 14:37:56 ICT 2014 com/sunsystem/HttpSnapClient/
  5965 Mon Jun 30 14:37:56 ICT 2014 com/sunsystem/HttpSnapClient/SnapClient.class

没有包含json-simple,因此任何使用此HttpSnapClient的应用程序都会因为查找未包含的json-simple而失败。

当我跑步时,我得到以下内容:gradle dependencies

:dependencies

------------------------------------------------------------
Root project
------------------------------------------------------------

archives - Configuration for archive artifacts.
No dependencies

compile - Compile classpath for source set 'main'.
\--- com.googlecode.json-simple:json-simple:1.1.1
     \--- junit:junit:4.10
          \--- org.hamcrest:hamcrest-core:1.1

default - Configuration for default artifacts.
\--- com.googlecode.json-simple:json-simple:1.1.1
     \--- junit:junit:4.10
          \--- org.hamcrest:hamcrest-core:1.1

提前感谢任何建议。

2 个答案:

答案 0 :(得分:1)

Fat Jar是您可能正在寻找的插件。默认情况下,jar文件中不包含依赖项。

答案 1 :(得分:1)

好像您正在运行 gradle build 而不是 gradle distZip gradle distTar ,它将所有内容捆绑到zip tar tar中。可能你对@Opal建议的解决方案更感兴趣。应用程序插件将创建一个发行版,其中包含用于startupscripts的bin文件夹和用于所有jar的lib。