大部分Java项目都是相似的,使用Gradle插件,能够抽象出这些步骤,这样就不必为每个Java项目都编写Gradle的project和task了
引入java插件
apply plugin: 'java'
引入java插件后,该插件会为脚本添加内置的任务,可以执行 gradle -q tasks 进行查看,列出任务列表
外部依赖
repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' }
依赖配置
依赖范围
compile:编译期间依赖
runtime:运行和测试的时候依赖,但是编译时期不需要。如 JDBC 驱动
testCompile:测试编译期间依赖
testRuntime:测试运行期间起来
使用Maven中央仓库进行依赖
repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' }
简写依赖
testCompile 'junit:junit:4.12'
使用Maven的远程仓库
repositories { maven { url "http://repo.mycompany.com/maven2" } }
使用Maven本地仓库
repositories { //使用Maven本地仓库 mavenLocal() //使用Maven中央仓库 mavenCentral() }
采用 Ivy 远程仓库
repositories { ivy { url "http://repo.mycompany.com/repo" } }
采用本地 Ivy 目录
repositories { ivy { // URL can refer to a local directory url "../local-repo" } }
一个项目可以采用多个库,Gradle会按照顺序从各个库中查询依赖文件
引入本地jar
compile files('libs/sigar.jar')
发布
uploadArchives { repositories { mavenDeployer { repository(url: "file:/Users/sherry/WorkPath/maven/repository/") } } }
相当于是Maven中的 mvn install
一个稍微完整的配置
group 'org.zln.learning' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'maven' sourceCompatibility = 1.8 [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' //仓库配置 repositories { //使用Maven本地仓库 mavenLocal() //使用Maven中央仓库 mavenCentral() } //依赖配置 dependencies { compile 'org.zln.bdrisk:bdrisk-commons:1.0-SNAPSHOT' testCompile 'junit:junit:4.12' } //发布配置 uploadArchives { repositories { mavenDeployer { repository(url: "file:/Users/sherry/WorkPath/maven/repository/") } } }
- 配置MANIFEST.MF
设置jar的main类 jar{ manifest{ attributes 'Main-Class':'com.manning.ToDoApp' } }
- 改变默认结构
sourceSets{ main{ java{ //设置源代码路径 srcDirs=['src'] } } test{ java{ //设置测试源代码路径 srcDirs=['src'] } } } 设置输出路径 buildDir='out'