Gradle 构建 jar 在 运行 时找不到依赖项
Gradle build jar cannot find dependency at run time
我有以下 build.gradle 文件,其中包含 json-简单依赖项:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter-api:5.4.2')
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
compile 'com.googlecode.json-simple:json-simple:1.1.1'
}
test {
useJUnitPlatform()
}
jar {
manifest {
attributes(
'Main-Class': 'src.main.java.demo.Hello'
)
}
}
我下面的 class 使用了 json-simple:
package src.main.java.demo;
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONObject;
public class Hello{
public String hello(){
try{String jsonString="{\"first\":\"Hello\",\"second\":\"world\"}";
JSONParser jspa=new JSONParser();
JSONObject job=(JSONObject)jspa.parse(jsonString);
return (String)job.get("first"); }
catch(Exception e){
return "";
}
}
public static void main(String[] args)
{
System.out.println(new Hello().hello());
}
}
项目构建成功,但是在运行项目创建的jar文件中,它说找不到JSONParser and JSONObject
。这意味着这些依赖项不会在运行时添加。我应该怎么做才能将它们添加到 class 路径?
谢谢!
你应该创建一个 fat jar。像这样更改构建 gradle
jar {
manifest {
attributes "Main-Class": "src.main.java.demo.Hello"
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it)}
}
}
对于年龄较大的 Gradle 你应该使用这个
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}
我有以下 build.gradle 文件,其中包含 json-简单依赖项:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter-api:5.4.2')
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.4.2')
compile 'com.googlecode.json-simple:json-simple:1.1.1'
}
test {
useJUnitPlatform()
}
jar {
manifest {
attributes(
'Main-Class': 'src.main.java.demo.Hello'
)
}
}
我下面的 class 使用了 json-simple:
package src.main.java.demo;
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONObject;
public class Hello{
public String hello(){
try{String jsonString="{\"first\":\"Hello\",\"second\":\"world\"}";
JSONParser jspa=new JSONParser();
JSONObject job=(JSONObject)jspa.parse(jsonString);
return (String)job.get("first"); }
catch(Exception e){
return "";
}
}
public static void main(String[] args)
{
System.out.println(new Hello().hello());
}
}
项目构建成功,但是在运行项目创建的jar文件中,它说找不到JSONParser and JSONObject
。这意味着这些依赖项不会在运行时添加。我应该怎么做才能将它们添加到 class 路径?
谢谢!
你应该创建一个 fat jar。像这样更改构建 gradle
jar {
manifest {
attributes "Main-Class": "src.main.java.demo.Hello"
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it)}
}
}
对于年龄较大的 Gradle 你应该使用这个
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}