Gradle 构建 Java 项目

  • 构建Java项目

    本章介绍有关如何使用Gradle构建文件构建Java项目的信息。首先,我们必须在构建脚本中添加Java插件,因为它提供了编译Java源代码,运行单元测试,创建Javadoc和创建JAR文件的任务。在build.gradle文件中使用以下行。
    
    apply plugin: 'java'
    
  • Java默认项目布局

    每当您向构建中添加插件时,它都会假设您的Java项目已进行了一定的设置(类似于Maven)。看一下下面的目录结构。
    • src/main/java包含Java源代码
    • src/test/java包含Java测试
    如果遵循此设置,则以下构建文件足以编译,测试和捆绑Java项目。要开始构建,请在命令行上键入以下命令。
    
    C:\> gradle build
    
    SourceSet可用于指定其他项目结构。例如,源存储在src文件夹中,而不是src/main/java中。看一下以下目录结构。
    
    apply plugin: 'java'
    sourceSets {
       main {
          java {
             srcDir 'src'
          }
       }
        
       test {
          java {
             srcDir 'test'
          }
       }
    }
    
  • 初始化任务执行

    Gradle尚不支持多个项目模板。但是它提供了一个初始化任务来创建新的Gradle项目的结构。如果没有其他参数,此任务将创建一个Gradle项目,其中包含gradle包装器文件,build.gradle和settings.gradle文件。 当添加带有Java库作为值的--type参数时,将创建一个Java项目结构,并且build.gradle文件包含具有Junit的某个Java模板。看一下下面的build.gradle文件代码。
    
    apply plugin: 'java'
    
    repositories {
       jcenter()
    }
    
    dependencies {
       compile 'org.slf4j:slf4j-api:1.7.12'
       testCompile 'junit:junit:4.12'
    }
    
    在存储库部分,它定义了在哪里找到依赖项。Jcenter用于解决您的依赖关系。依赖项部分用于提供有关外部依赖项的信息。
  • 指定Java版本

    通常,Java项目具有一个版本和一个在其上编译的目标JRE。该版本和sourceCompatibility属性可以在build.gradle文件设定。
    
    version = 0.1.0
    sourceCompatibility = 1.8
    
    如果工件是可执行的Java应用程序,则MANIFEST.MF文件必须使用main方法知道该类。
    
    apply plugin: 'java'
    
    jar {
       manifest {
          attributes 'Main-Class': 'com.example.main.Application'
       }
    }
    
  • 示例

    创建一个目录结构,如下面所示。
    
    └─src
        ├─main
        │  └─java
        │      └─com
        │          └─bank
        ├─resources
        └─test
            └─java
                └─com
                    └─bank
    
    将以下给定的Java代码复制到App.java文件中,并存储到Consumerbanking\src\main\java\com\bank目录中。
    
    package com.bank;
    
    /**
    * Hello world!
    *
    */
    
    public class App {
       public static void main( String[] args ){
          System.out.println( "Hello World!" );
       }
    }
    
    将以下给定的Java代码复制到AppTest.java文件中,并存储到Consumerbanking\src\test\java\com\bank目录中。
    
    package com.bank;
    
    /**
    * Hello world!
    *
    */
    
    public class AppTest{
       public static void main( String[] args ){
          System.out.println( "Hello World!" );
       }
    }
    
    将下面给出的代码复制到build.gradle文件中,并放置到Consumerbanking\目录中。
    
    apply plugin: 'java'
    
    repositories {
       jcenter()
    }
    
    dependencies {
       compile 'org.slf4j:slf4j-api:1.7.12'
       testCompile 'junit:junit:4.12'
    }
    
    jar {
       manifest {
          attributes 'Main-Class': 'com.example.main.Application'
       }
    }
    
    要编译并执行上述脚本,请使用以下给定的命令。
    
    consumerbanking\> gradle tasks
    consumerbanking\> gradle assemble
    consumerbanking\> gradle build