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' 简略格式相关参考链接
解决 java.lang.ClassNotFoundException: javax.servlet.ServletContext报错
版权声明:本文为wwb1234560原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。