gradle-學習筆記(2)-多項目構建

記得在maven中支持多個子項目的構建方法,一樣的在gradle 中也會支持多項目的構建方法css

還記得在maven中如何配置多項目工程嗎, 這裏回憶一下html

  1. 首先咱們須要一個父元素pom文件好比這樣
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.kyssion</groupId>
    <artifactId>maven-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
</project>

而在gradle中,咱們並不須要指定父元素的標籤,咱們只須要編寫好對應的文件夾名稱,而且將文件夾名稱和對應的目錄結構對應清,gradle 就能自動的識別這個子項目java

好比我建立這樣一個子項目名稱是greeting-libraryapache

子項目中的配置未見build.gradle編程

plugins {
    id 'groovy'
}

group 'com.kyssion'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.5.6'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

父項目中的setting.gradle中添加這樣一條配置app

include 'greeting-library'

這樣就能使用greeting-library目錄下的gradle子項目了maven

一個簡單的項目

這使用一個簡單的項目介紹一下這個如何使用gradle 實現整合打包編程語言

項目結構和模塊劃分

├── build.gradle
├── greeter
│   ├── build
│   │   ├── classes
│   │   │   └── java
│   │   │       └── main
│   │   │           └── greeter
│   │   │               └── Greeter.class
│   │   ├── distributions
│   │   │   ├── greeter-1.0-SNAPSHOT.tar
│   │   │   └── greeter-1.0-SNAPSHOT.zip
│   │   ├── generated
│   │   │   └── sources
│   │   │       └── annotationProcessor
│   │   │           └── java
│   │   │               └── main
│   │   ├── libs
│   │   │   └── greeter-1.0-SNAPSHOT.jar
│   │   ├── scripts
│   │   │   ├── greeter
│   │   │   └── greeter.bat
│   │   └── tmp
│   │       ├── compileJava
│   │       └── jar
│   │           └── MANIFEST.MF
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── greeter
│       │   │       └── Greeter.java
│       │   └── resources
│       └── test
│           ├── java
│           └── resources
├── greeting-library
│   ├── build
│   │   ├── classes
│   │   │   └── groovy
│   │   │       ├── main
│   │   │       │   └── greeter
│   │   │       │       └── GreetingFormatter.class
│   │   │       └── test
│   │   │           └── greeter
│   │   │               └── GreetingFormatterSpec.class
│   │   ├── generated
│   │   │   └── sources
│   │   │       └── annotationProcessor
│   │   │           └── groovy
│   │   │               ├── main
│   │   │               └── test
│   │   ├── libs
│   │   │   └── greeting-library-1.0-SNAPSHOT.jar
│   │   ├── reports
│   │   │   └── tests
│   │   │       └── test
│   │   │           ├── classes
│   │   │           │   └── greeter.GreetingFormatterSpec.html
│   │   │           ├── css
│   │   │           │   ├── base-style.css
│   │   │           │   └── style.css
│   │   │           ├── index.html
│   │   │           ├── js
│   │   │           │   └── report.js
│   │   │           └── packages
│   │   │               └── greeter.html
│   │   ├── test-results
│   │   │   └── test
│   │   │       ├── binary
│   │   │       │   ├── output.bin
│   │   │       │   ├── output.bin.idx
│   │   │       │   └── results.bin
│   │   │       └── TEST-greeter.GreetingFormatterSpec.xml
│   │   └── tmp
│   │       ├── compileGroovy
│   │       │   └── groovy-java-stubs
│   │       ├── compileTestGroovy
│   │       │   └── groovy-java-stubs
│   │       ├── jar
│   │       │   └── MANIFEST.MF
│   │       └── test
│   │           └── jar_extract_15307722744227685163_tmp
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── groovy
│       │   │   └── greeter
│       │   │       └── GreetingFormatter.groovy
│       │   ├── java
│       │   └── resources
│       └── test
│           ├── groovy
│           │   └── greeter
│           │       └── GreetingFormatterSpec.groovy
│           ├── java
│           └── resources
└── settings.gradle

這個項目中劃分爲根項目gradle-demo,包項目greeting-library,core可運行項目greeter。函數

注意: 經過上面的例子咱們能夠得出,在gradle 中不一樣的子項目的命名規則是使用文件夾的
注意:在java 項目中,gradle 要求 必須指定項目的main函數具體方法見下方gradle

這裏針對gradle的多語言的編程的目錄結構作一下補充,gradle中源代碼贊成放置在這樣的位置中src->main/test->編程語言名稱文件夾 下
plugins {
    id 'java'
    id 'application'
}

group 'com.kyssion'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

mainClassName = "greeter.Greeter"  //這一句指定了main函數
repositories {
    mavenCentral()
}

dependencies {
    compile project(':greeting-library')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

總結

在構建gradle 多模塊項目的時候,必定要注意多模塊的之間的引用,模塊中main函數的編寫,父模塊的include

相關文章
相關標籤/搜索