版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cwt8805/article/details/65633418
手动创建一个目录kni,进入kni创建一个build.gradle文件,内容如下:
apply plugin: 'java'
jar {
baseName = 'knight'
version = '0.0.1-SNAPSHOT'
}
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework:spring-context:4.3.7.RELEASE")
}
然后从第一章取来相应的代码,最终组成这样的目录结构:
在终端执行命令gradle build
即可成功编译出一个jar文件(build/libs/knight-0.0.1-SNAPSHOT.jar)。
尝试运行jar文件:
cd build/lib/
java -cp knight-0.0.1-SNAPSHOT.jar sia.knights.KnightMain
输出Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/support/ClassPathXmlApplicationContext
。
解决方法一
在build.gradle文件中添加内容:
task copyToLib(type: Copy) {
into "$buildDir/libs"
from configurations.runtime
}
build.dependsOn(copyToLib)
定义了一个copyToLib
的Task,该Task的作用就是将依赖的jar包全部copy到build/libs下,然后指定为build
的依赖。
最后回到项目根目录执行gradle build
,再次进入build/libs,执行java -cp * sia.knights.KnightMain
即可。
解决方法二
在build.gradle文件中添加内容:
apply plugin: 'application'
mainClassName = System.getProperty("mainClass")
然后回到项目根目录,这样运行:
gradle run -DmainClass=sia.knights.KnightMain
解决方法三
在build.gradle文件中添加内容:
task run(type: JavaExec, dependsOn: classes) {
main = 'sia.knights.KnightMain'
classpath sourceSets.main.output.classesDir
classpath sourceSets.main.output.resourcesDir
classpath configurations.runtime
}
然后回到项目根目录,这样运行:
gradle run
解决方法四
在build.gradle头部添加插件
plugins {
id "us.kirchmeier.capsule" version "1.0.2"
}
然后添加一个打包的task
task fatCapsule(type: FatCapsule) {
applicationClass 'sia.knights.KnightMain'
}
然后回到项目根目录,这样运行,即可生成一个可执行的jar包:
gradle fatCapsule