首先我们先明确一点,我们是要使用Gradle将一个Java项目编译打包成一个jar包,尽量不对原工程进行大的改动。我们只需要在项目目录下新建一个build.gradle文件,内容如下,具体的我们后面再解释。
buildscript {
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
}
apply plugin: 'java'
group = 'com.kanaiji'
version = '1.0.0'
ext{sourceCompatibility = '1.7'}
repositories {
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
sourceSets {
main {
java {
srcDir 'src'
}
}
}
task mapperXmlCopy(type: Copy) {
copy {
from("src/com/kanaiji/dao/mapper") {
include ("**/*Mapper.xml")
}
into("${buildDir}/classes/java/main/com/kanaij/dao/mapper")
}
}
dependencies {
compile fileTree(dir:'war/WEB-INF/lib',include:['*.jar'])
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}
jar {
baseName = 'JavaToGradleDemo'
version = '0.1.0'
}
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
repositories : 为了提高下载速度,我们将仓库换成阿里云的。
apply plugin: 'java'
告诉gradle我们这是要编译java代码
sourceCompatibility = '1.7'
指定编译.java文件的jdk版本
sourceSets的srcDir后面指定你的.java文件所在目录,比如我的包名是com.kanaiji.dao.mapper...,这里就写com目录的父级目录
如果你的java项目中还包含了mapper.xml文件需要一起打包进jar,在这里我们采取的是新建一个task,作用是将xml文件复制进目的包下,from的地址仿照srcDir填,into的地址前面这么写${buildDir}/classes/java/main,因为编译后的class文件啥的默认会在classes/java/main下,后面的路径填你想把xml复制到的包路径。
dependencies填写项目的依赖,compile fileTree后面填写你本地依赖的jar包存放地址,如果你的项目用到了HttpServletRequest等tomcat提供的jar,那么你还需要单独引入,这样编译才不会报错。
jar里面的内容是打包生成jar包的名字和版本号
tasks.withType,如果你的代码中包含中文的话,指定编码,否则中文会乱码
建好build.gradle文件以后,在build.gradle文件所在目录下打开命令提示符,输入gradle build,这时候在项目目录下会生成build目录,我们需要的jar包就在build目录的libs目录中。