VSCode使用Gradle进行JavaWeb开发的一些配置

Gradle进行Java构建

引入插件

apply plugin: 'java'

目录结构

project 
    +build 
    +src/main/java 
    +src/main/resources 
    +src/test/java 
    +src/test/resources
    +src/main/webapp/WEB-INF/web.xml

执行

gradle clean build
  • Gradle在src/main/java搜寻打包源码,src/test/java搜寻测试源码

     

  • src/main/resources的资源被打包,src/test/resources的资源添加到类路径测试
  • 打包后所有文件输出到build目录下,打包文件在build/libs

MANIFEST.MF配置

sourceCompatibility = 1.5 
version = '1.0' 
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version 
    } 
}

参数解释

sourceCompatibility     编译Java文件的JDK版本 
targetCompatibility     确保class文件与该版本或更新的虚拟机兼容
attributes              在jar包中的manifest添加属性

使用Gradle进行项目的初始化

安装好Gradle之后,创建一个工程文件夹,然后命令行输入

gradle init --type java-application

来进行项目的初始化。这里初始化之后主要是为了能够让vscode有更多的智能提示和更少的报错 。

这两天因为想着早点把主任交给的任务完成,并没有详细学习Gradle的一些命令。看着那么多爆红的import包,内心极度感慨。。

用户的.gradle文件路径配置

# 需要在环境变量中加入变量
GRADLE_USER_HOME
# 变量值为gradle根目录下的.gradle目录
D:\Software\gradle\.gradle

使用Gradle打包构建工程

# 直接进行打包
gradle build
# 删除build及已经构建完的文件,然后再打包。我常用这个。可以打包jar,也可以打包war
gradle clean build

打包的时候提示javax.servlet.ServletContext找不到

需要在build.gradle中引入servlet-api.jar

dependencies {
    /* 因只在编译时期运行,故使用providedCompile,compile的包表示在编译时期和运行时期都需要 */
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
}

打包的时候提示乱码,GBK字符集错误

解决这个需要在build.gradle中引入一个任务,让java在编译的时候使用UTF-8进行编码

/* 设置编码字符集 */
tasks.withType(JavaCompile) {  
    options.encoding = "UTF-8"  
}

build.gradle相关配置

repositories {
 
    mavenLocal()
    maven {
 
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
 
        }
 
    maven {
 
        url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
 
    }
 
    mavenCentral()
    jcenter()
 
}
 
apply plugin: "war"
 
dependencies {
 
    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.47'
 
    compile group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '8.2.2.jre11'
 
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
 
}

参数解释

相关仓库
 
repositories {}                       用于存放仓库(仓库提供所需jar包)。前两个为阿里源仓库。国内使用更快
mavenCentral()                        从https://repo.maven.apache.org/maven2/获取依赖项。相当于给URL定义了别名
jcenter()                             从http://jcenter.bintray.com/获取依赖项,比mavenCentral()依赖多
mavenLocal()                          从本地Maven存储库获取依赖项。
                                      本地maven仓库可在maven根目录/conf/settings.xml进行设置
                                          <localRepository>D://Software//maven//repository</localRepository>
                                      本地maven仓库寻找流程(M2_HOME是maven的环境变量)
                                          USER_HOME/.m2/settings.xml >> M2_HOME/conf/settings.xml >> USER_HOME/.m2/repository
maven { url }                         自定义maven远程仓库
 
 
相关插件
 
apply plugin: "war"                   用于JavaWeb项目,打成war包需要引入该插件
apply plugin: "java"                  用于Java项目,打成jar包需要引入该插件
 
 
相关依赖
 
dependencies {}                       用于存放依赖包
----complie                           该参数引入的依赖包编译时期和运行时期都需要
----providedCompile                   该参数引入的依赖包仅编译时期使用
----runtime                           该参数引入的依赖包仅在运行和测试时使用,编译时不需要
----testCompile                       该参数引入的依赖包仅用于测试时编译
----testRuntime                       该参数引入的依赖包引用于测试时运行
 
 
依赖格式
group: 'xx', name: 'xxx', version: '4.0.1'     完整格式
'xx:xxx:4.0.1'                                 简略格式

相关参考链接

VSCode + Gradle搭建 Java开发环境

解决 java.lang.ClassNotFoundException: javax.servlet.ServletContext报错

Gradle编译设置编码格式


版权声明:本文为wwb1234560原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。