zoukankan      html  css  js  c++  java
  • 004_Gradle 笔记——Java构建入门

    Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码。而大部分的项目,它 们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代码,因为Gradle已经为我们提供了相应的插件。Gradle 本身自带了许多插件,而对于Gradle没有的插件,可以去github上看看有没有其他人实现,或自己实现。对Java项目而言,Gradle有 Java插件,提供了像编译、测试、打包之类的功能。

    这里简单介绍一下Java插件。

    Java插件为构建项目定义了许多的默认设置,像源文件目录,编译后的文件存放位置等等。如果你是按着默认的规则来的,那么构建脚本将会很简单。当然,如果项目结构不一样,也可以自己指定这些规则。这里暂不介绍,只说一下基本的用法。

    1. 使用Java插件

    只需要要构建脚本中添加以下代码:

    1. apply plugin: 'java'  


    定义一个Java项目只需要添加这么一句代码,它会为你添加Java插件,以及一些内置任务。

    默认情况下,Gradle会在src/main/java中查找你的源码,在src/test/java中查找你的测试代码,而src/main /resources下的文件都会被打包,src/test/resources下的文件会被包含在classpath中用于测试。所有输出的文件都保存 在build目录里,而生成的jar包则是在build/libs里面。

    2. 构建项目

    Java插件帮你定义了许多任务,这个可以通过前面说的gradle tasks命令来看。当执行gradle build 时,Gradle会执行编译,测试,并且将源文件和资源文件打成jar包。

    除了build之外,还有几个常用的任务,如下:

    clean:删除build目录和其他构建时生成的文件。

    assemble:编译并打包,但不执行单元测试。不过一些其他插件可能会增强这个任务,例如 War 插件会再打出war包。

    check:编译并测试代码。其他插件可能会增强这个任务。比如 Code-quality 插件会让这个任务去执行Checkstyle。

    3. 外部依赖

    通常一个项目会有许多外部依赖,我们需要在构建脚本中告诉Gradle在哪里可以找到这些依赖。比如如果使用maven中央仓库的话,我们可以通过以下代码来添加仓库:
    1. repositories {  
    2.     mavenCentral()  
    3. }  

    然后再通过下面代码添加依赖:
    1. dependencies {  
    2.     compile group: 'commons-collections', name: 'commons-collections', version: '3.2'  
    3.     testCompile group: 'junit', name: 'junit', version: '4.+'  
    4. }  

    上面的代码中,声明了在编译期,需要依赖 commons-collections,在测试期需要依赖 junit。
    关于依赖的内容,下一篇会有更详细的笔记。

    4. 自定义项目

    前面提到,Java插件为项目定义了许多默认配置,如果我们需要,这些配置都是可以由我们自己来定义的。如下面例子,指定项目版本号和JDK版本号,并且添加一些属性到JAR包的manifest文件中:
    1. sourceCompatibility = 1.5  
    2. version = '1.0'  
    3. jar {  
    4.     manifest {  
    5.         attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version  
    6.     }  
    7. }  

    Java插件添加的都是普通任务,所以前面一章介绍的Gradle机制也可以用在这里,比如修改任务的依赖,添加任务行为,甚至重写某个任务等等。下面的例子是修改test任务来添加系统属性:
    1. test {  
    2.     systemProperties 'property': 'value'  
    3. }  

    5. 发布JAR包

    以下代码是发布JAR包到本地中。发布到maven仓库或jcenter仓库以后再讨论。
    1. uploadArchives {  
    2.     repositories {  
    3.        flatDir {  
    4.            dirs 'repos'  
    5.        }  
    6.     }  
    7. }  

    执行gradle uploadArchives即可发布该JAR包。

    6. 创建Eclipse项目

    如果想把项目导入到eclipse当中,需要使用一个Eclipse插件:
    1. apply plugin: 'eclipse'  

    执行gradle eclipse会生成eclipse项目文件,关于此插件以后再细说。

    7. 小结

    下面是一个完整的Java项目构建脚本:
    1. apply plugin: 'java'  
    2. apply plugin: 'eclipse'  
    3.   
    4. sourceCompatibility = 1.5  
    5. version = '1.0'  
    6. jar {  
    7.     manifest {  
    8.         attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version  
    9.     }  
    10. }  
    11.   
    12. repositories {  
    13.     mavenCentral()  
    14. }  
    15.   
    16. dependencies {  
    17.     compile group: 'commons-collections', name: 'commons-collections', version: '3.2'  
    18.     testCompile group: 'junit', name: 'junit', version: '4.+'  
    19. }  
    20.   
    21. test {  
    22.     systemProperties 'property': 'value'  
    23. }  
    24.   
    25. uploadArchives {  
    26.     repositories {  
    27.        flatDir {  
    28.            dirs 'repos'  
    29.        }  
    30.     }  
    31. }  

    8. 多项目构建

    项目结构:
    1. multiproject/  
    2.   api/  
    3.   services/webservice/  
    4.   shared/  

    首先需要创建一个settings.gradle的配置文件,来声明构建要包含哪些项目。文件的内容如下:
    1. include "shared", "api", "services:webservice", "services:shared"  

    多项目构建,以后会详谈。

    9. 公共配置

    对多项目构建当中,会有一些配置是共同的。Gradle会在根项目上采用一种叫配置注入的方式定义一些公共配置。所以在这种情况下,可以把这些公共配置定义在根项目的配置文件里,子项目的配置文件会迭代这些配置并注入到自己的配置中。
    下面是示例代码:
    1. subprojects {  
    2.     apply plugin: 'java'  
    3.     apply plugin: 'eclipse-wtp'  
    4.   
    5.     repositories {  
    6.        mavenCentral()  
    7.     }  
    8.   
    9.     dependencies {  
    10.         testCompile 'junit:junit:4.11'  
    11.     }  
    12.   
    13.     version = '1.0'  
    14.   
    15.     jar {  
    16.         manifest.attributes provider: 'gradle'  
    17.     }  
    18. }  

    上面的配置就会子项目都应用了java和eclipse-wtp插件,声明了maven中央仓库,添加了测试期的依赖junit,以及定义了项目版本包和打成的jar包里的manifest文件的属性。

    10. 项目依赖

    同一个构建中的项目可以建立项目依赖。比如api子项目要依赖share子项目生成的jar包,那么在api子项目的构建脚本中可以使用以下代码:
    1. dependencies {  
    2.     compile project(':shared')  
    3. }  

    11. 多项目的打包发布

    1. task dist(type: Zip) {  
    2.     dependsOn spiJar  
    3.     from 'src/dist'  
    4.     into('libs') {  
    5.         from spiJar.archivePath  
    6.         from configurations.runtime  
    7.     }  
    8. }  
    9.   
    10. artifacts {  
    11.    archives dist  
    12. }  

    这段代码我还没能理解。先记着。

    下篇将是Gradle依赖管理基础的笔记。

    本系列博客为Gradle 用户手册的笔记。本文是Gradle 1.2的第七章Java构建快速入门的笔记,博客中的代码均来源于此文档。

    本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/40656311

  • 相关阅读:
    [转]使用Java Mission Control进行内存分配分析
    JDE开发端安装问题(JDE初步卸载重装)
    JDE开发端安装笔记
    [转]JDE910--jas.ini参数说明
    [转]十个常见的缓存使用误区及建议
    JDE910笔记2--OMW项目建立及简单使用
    JDE910笔记1--基础介绍及配置
    [转] 编程之美--字符串移位包含的问题
    关于JDBC
    [转]何时使用委托而不使用接口(C# 编程指南)
  • 原文地址:https://www.cnblogs.com/itcomputer/p/4873980.html
Copyright © 2011-2022 走看看