资讯专栏INFORMATION COLUMN

gradle-学习笔记(2)-多项目构建

happen / 816人阅读

摘要:记得在中支持多个子项目的构建方法同样的在中也会支持多项目的构建方法还记得在中如何配置多项目工程吗这里回忆一下首先我们需要一个父元素文件比如这样而在中我们并不需要指定父元素的标签我们只需要编写好对应的文件夹名称,并且将文件夹名称和对

记得在maven中支持多个子项目的构建方法,同样的在gradle 中也会支持多项目的构建方法

还记得在maven中如何配置多项目工程吗, 这里回忆一下

首先我们需要一个父元素pom文件比如这样



    4.0.0

    com.kyssion
    maven-demo
    1.0-SNAPSHOT
    pom

而在gradle中,我们并不需要指定父元素的标签,我们只需要编写好对应的文件夹名称,并且将文件夹名称和对应的目录结构对应清,gradle 就能自动的识别这个子项目

比如我创建这样一个子项目名称是greeting-library

子项目中的配置未见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中添加这样一条配置

include "greeting-library"

这样就能使用greeting-library目录下的gradle子项目了

一个简单的项目

这使用一个简单的项目介绍一下这个如何使用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中源代码同意放置在这样的位置中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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73430.html

相关文章

  • gradle-学习笔记(1)-初步使用

    摘要:最近想深入的学习一下工程化方面相关的东西,在和直接纠结不已,因为的扩展性太差劲了,学习成本颇高,所以最后投入了的怀抱中,以后有时间再重新学习一下吧最近的学习笔记是基于系列,其中各种教程和例子大都是来源于官方文档或者网络上的博客。 最近想深入的学习一下工程化方面相关的东西,在maven和gradle直接纠结不已,因为maven的扩展性太差劲了,学习成本颇高,所以最后投入了gradle的怀...

    frank_fun 评论0 收藏0
  • Gradle学习笔记(1)创建简单的Java项目

    摘要:是一个基于和概念的项目自动化构建工具。当前其支持的语言限于和主要面向应用。本次分享将具体讲述如何利用来创建一个简单的项目。首先我们新建一个文件夹作为展示的项目。中的代码如下这是用来定义项目。接着创建文件夹,这是项目开发中习惯性的构建方法。   Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)...

    URLOS 评论0 收藏0
  • 鸿蒙学习笔记之初运项目

    摘要:项目结构下面是我们创建项目生成的目录展开目录如下配置文件,由系统自动生成,一般情况下不需要进行修改开发工具的信息默认启动模块主模块,开发者用于编写源码文件以及开发资源文件的目录用于存放模块的依赖文件用于存放源码用于存放应用所用到的资源文件 1.项目结构 下面是我们创建项目生成的目录 1.M...

    不知名网友 评论0 收藏0
  • 鸿蒙学习笔记之初运项目

    摘要:项目结构下面是我们创建项目生成的目录展开目录如下配置文件,由系统自动生成,一般情况下不需要进行修改开发工具的信息默认启动模块主模块,开发者用于编写源码文件以及开发资源文件的目录用于存放模块的依赖文件用于存放源码用于存放应用所用到的资源文件 1.项目结构 下面是我们创建项目生成的目录 1.M...

    Pikachu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<