Spring实战——如何运行第一章的代码(如何生成一个可执行的jar包)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/cwt8805/article/details/65633418
今日推荐