OneCoder Avatar
OneCodercoderli.com · 937 篇博文
{ } Java

Java 服务端架构

Spring、Netty、日志框架与工程化实战

🎨 视觉封面

《Gradle user guide》翻译 — 7.3 多工程Java构建

📅 2013-09-24·✍️ onecoder·计算中...·⏱️ 4 分钟
#Gradle#翻译

现在我们来看一个典型的多项目构建的例子。下面是工程的布局:

样例7.10 多项目构建 - 分层布局

构建结构

TEXT
multiproject/
 api/
 services/webservice/
 shared/

注意:本样例的代码可以在Gradle完整安装包的samples/java/multiproject目录下找到

这里我们有三个工程。api工程生成用于Java客户端访问XML webservice服务的JAR包。webservice工程是一个web应用,用于返回XML信息。shared工程包含了api和webservice工程共同使用的代码。

7.3.1 定义一个多项目构建

为了定义一个多项目构建,你需要创建一个配置文件(settings file)。该配置文件存放在源码树的根目录,指定了哪些项目需要包含在构建任务之中。该配置文件必须命名位settings.gradle。在本例中,我们使用一个简单的层次布局。下面是相关的配置文件:

样例7.11 多项目构建 - settings.gradle 文件

GROOVY
include "shared", "api","services:webservice", "services:shared"

更多关于配置文件的信息,可在第56章的多项目构建中找到。

7.3.2 常用配置

对于大多数的多项目构建来说,有一些对所有项目都常用的配置。在我们的样例中,我们使用一种叫做配置注入的技术,将这些通用配置定义在根项目中。这里,根项目就像一个容易,子项目在这种情况下覆盖了该容器中的元素 - 并注入了特殊的配置。这样,我们可以轻松的给所有归档定义清单内容和一些通用的依赖:

样例7.12 多项目构建 - 通用配置

GROOVY
subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse-wtp'
    repositories {
       mavenCentral()
}
    dependencies {
        testCompile 'junit:junit:4.11'
}
    version = '1.0'
    jar {
        manifest.attributes provider: 'gradle'
} }

注意到,我们的样例对每个子项目都应用Java插件。这意味着我们在之前部分看过的任务和配置属性对每个子项目都是可用的。因此,你可以通过在项目根路径执行gradle build命令给所有的工程进行编译,测试并打成JAR包。

7.3.3 项目间依赖

你可以在同一个构建中增加项目间的依赖,例如,一个项目的JAR包被用于另一个项目的编译。在api项目的构建文件中,我们将增加一个对shared工程JAR包的依赖。由于这个依赖的存在,Gradle将会确保shared工程总是在api项目之前先进行构建。

样例7.13 多项目构建 - 项目间依赖

GROOVY
dependencies {
    compile project(':shared')
}

关于如何关闭该功能,可参见第56.7.1章节的"关闭依赖项目的构建"部分。

7.3.4 创建一个分支

我们可以增加一个分支,用于打包给客户端使用:

样例7.14 多项目构建 - 分支文件

GROOVY
task dist(type: Zip) {
    dependsOn spiJar
    from 'src/dist'
    into('libs') {
        from spiJar.archivePath
        from configurations.runtime
    }
}
artifacts {
   archives dist
}
💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

Java 架构演进与实战 · 架构实践⏱️ 4 分钟

《Gradle user guide》原创翻译 — 第六章 构建脚本基础

译者注:从第六章开始翻译,为了个人学习需要,先省略了前面已经了解和不太相关部分。见谅。<br / <br / 6.1 项目和任务<br / <br / Gradle里的一切都基于两个基本概念:项目和任务。(projects and tasks)。<br / <br / 每个Gradle构建都是由一个或多个项目组成的。项...

阅读全文 →
Java 架构演进与实战 · 架构实践⏱️ 9 分钟

《Gradle user guide》翻译 — 7.2 一个基本的Java项目

7.2 一个基本的Java项目 我们来看一个简单的例子。把下面的代码加入你的构建文件,以使用Java插件: 例子 7.1 使用Java插件 注意:该样例的代码可在Gradle的安装包中的samples/java/quickstart路径下找到。 这就是你定义一个Java项目所需要做的一切。这就会在你项目里使用Java插...

阅读全文 →
Java 架构演进与实战 · 架构实践⏱️ 2 分钟

《Gradle user guide》翻译 — 第七章 Java快速开始

7.1 Java插件 <p 如我们所了解的,Gradle是一个通用的构建工具。它可以通过你的构建脚本实现几乎任何你想做的事情。不过,作为开箱即用的产品,它不会做任何构建脚本不包含的任务。</p 大多数的Java项目都跟基础情况很相似:你需要编译你的Java源文件,执行单元测试,并且创建一个包含你的类的JAR包。如果你不...

阅读全文 →
OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!