我有以下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
提前感谢任何建议。
答案 0 :(得分:1)
Fat Jar是您可能正在寻找的插件。默认情况下,jar文件中不包含依赖项。
答案 1 :(得分:1)
好像您正在运行 gradle build 而不是 gradle distZip 或 gradle distTar ,它将所有内容捆绑到zip tar tar中。可能你对@Opal建议的解决方案更感兴趣。应用程序插件将创建一个发行版,其中包含用于startupscripts的bin文件夹和用于所有jar的lib。