Gradle for Java

Gradle针对Java开发提供了‘java’插件,非常方便。如果安装约定的目录结构组织项目,几乎不用修改build.gradle。当然也很方便修改build.gradle去适应你的项目结构。

A basic Java project

使用Java plugin
1
apply plugin: 'java'
  • gradle的Java插件约定的项目结构跟Maven的项目结构一样
  • 所有的output文件放在build文件夹下

Tasks

  • build:编译,测试并创建一个包含main下面的类和资源文件的JAR
  • clean:删除build文件夹,做清理
  • assemble:编译并打一个JAR包,不测试代码。加了War插件之后会打一个war包
  • check:编译,测试。也可以添加其他的插件(Code-quality)来检查你的代码格式

管理依赖

依赖管理分为两个部分,第一是本项目依赖外部的其他jar,第二是本项目会产生一个jar包,别的项目会依赖当前项目的jar包,所以需要把jar包放置到一个公共的位置。

管理外部依赖

  • 添加Maven的Repository
添加respositories
1
2
3
repositories {
    mavenCentral()
}
添加respositories
1
2
3
4
5
repositories {
    maven {
        url "http://repo.mycompany.com/maven2"
    }
}
添加lvy respositories
1
2
3
4
5
repositories {
    ivy {
        url "http://repo.mycompany.com/repo"
    }
}
添加lvy local respositories
1
2
3
4
5
repositories {
    ivy {
        url "../local-repo"
    }
}
*  Gradle支持Maven和lvy的Respository
*  Gradle可以通过local file system或者HTTP访问Respository
*  Gradle默认不配置respository
  • 添加dependencies
添加dependencies
1
2
3
4
dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}
添加dependencies
1
2
3
dependencies {
    compile 'org.hibernate:hibernate-core:3.6.7.Final'
}
*  跟Maven一样,依赖分为几个声明周期:
    *  compile
    *  runtime
    *  testCompile
    *  testRuntime
*  同样跟Maven一样,需要指定依赖包的group,name以及version。也可以通过简单的方法“group:name:version”来指定

Publishing artifacts

设置publish到lvy
1
2
3
4
5
6
7
8
9
10
11
uploadArchives {
    repositories {
        ivy {
            credentials {
                username "username"
                password "pw"
            }
            url "http://repo.mycompany.com"
        }
    }
}
设置publish到Maven
1
2
3
4
5
6
7
8
9
apply plugin: 'maven'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://localhost/tmp/myRepo/")
        }
    }
}
设置publish到文件夹
1
2
3
4
5
6
7
uploadArchives {
    repositories {
       flatDir {
           dirs 'repos'
       }
    }
}

IDE插件

apply plugin: ‘eclipse’ apply plugin: ‘idea’

gradle idea

Comments

Comments