Gradle教程第一章:1.6多项目建立

Posted 安卓开发资源分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle教程第一章:1.6多项目建立相关的知识,希望对你有一定的参考价值。

1.6多项目建立

目录

1.6.1。一个多项目的构建

1.6.2。执行一个多项目建设


   只有建立了项目才会有文件和源代码树,它是一个大规模的、单一的应用。它往往是管理负责一个项目,它们被分割成小规模块,相互依赖的模块。“相互依赖”是很重要的,虽然和typically want链接模块组合在一起,它们是可以同时建立。

Gradle支持这个方案通过多项目建立

Gradle教程第一章:1.6多项目建立

1.6.1 多项目的建立

这种建立适用于所有大小不一的项目,但它们有一些共同的特点:

settings.gradle文件在根目录主要项目的目录

build.gradle文件在根目录主要目录

的子目录,它有自己的目录* .gradle构建文件(一些多项目建设子项目构建脚本可以省略)

这个settings.gradle文件告诉Gradle如何在项目和子项目。而且,你不必阅读本文件只需要简单地了解项目的结构运行命令Gradle项目。这是在用那个java命令的输出多项目建立在Gradle上

16.1.1建项目清单

输出Gradle- Q项目

gradle -q projects------------------------------------------------------------Root project------------------------------------------------------------Root project 'multiproject'+--- Project ':api'+--- Project ':services'|    +--- Project ':services:shared'|    \--- Project ':services:webservice'\--- Project ':shared'To see a list of the tasks of a project, run gradle <project-path>:tasksFor example, try running gradle :api:tasks


这告诉你,多项目有三个直接子项目:应用程序接口服务共享。这个服务项目然后有自己的子项共享WebService。这些映射到目录结构,所以很容易找到们。例如,你可以找到WebService进入<root>/services/webservice


默认情况下,Gradle使用的目录的名称查找settings.gradle作为根项目的名称。这通常不会造成问题,因为所有的开发人员检查同一个目录的名称在一个项目上持续集成服务器,目录名称可以自动生成的,和你的VCS中的名称不匹配。因为这个原因,它建议你总是根项目名称是可以预览的,即使在单项目的建立。可以通过设置配置根项目名称rootproject.name

每个项目通常会自己生成文件,但这并不一定是这样。在上面的例子中,该服务项目只是一个储存其它子项目分组。没有建立文件中相应的目录。然而,多项目对应一项根目录。

build.gradle通常用于小的项目之间共享共同的配置,例如采用插件和依赖的所有childprojects同。它也可以用来配置单独的子项目在一个地方的时候,最好是有配置。这意味着你要经常检查根文件whendiscovering是否在一个特定的子项目上配置

另一件需要记住的是,构建文件可能不build.gradle。许多项目名称生成文件项目名称后,如api.gradleservices.gradle从previousexample。这样的做法有很大帮助,因为在IDES上你是很难找出是哪一个文件build.gradle有二十种可能性是你想打开一个。这个是由settings.gradle文件,但作为一个建立useryou不需要知道细节它是如何完成的。只要你看看子项目projectdirectories如何找到的文件

一旦你知道什么项目是可行的,为用户构建的关键问题是如何在项目执行任务。

1.6.2 执行一个多项目工程

从用户的角度来看,多项目建设仍然可以运行任务集合。不同的是,你可能想控制其中一个项目的任务得到执行。你有两个选择:

改变目录对应你有权限,就执行项目gradle <task>为正常

任何目录中使用合适的任务名称,这通常是从根目录完成。例如:gradle :services:webservice:build将建WebService子项目和任何子项取决于他们的依赖关系


第一种方法是类似于单项目的使用情况,但Gradle的作品会在一个稍微项目下建立命令Gradlertest将执行测试在任何子项目的任务,相对于当前工作目录这也任务。所以你从工程的根目录运行命令,你会跑测试进入APIsharedservices:shared和services:webservice。如果你从服务项目目录中运行的命令,你只会执行任务services:sharedservices:webservice。

要对执行的控件进行更多的控制,请使用授权名称(第二种方法))。这些路径就像目录路径,但使用“:”代替“/”或“\”。如果路径以“:”开头,则路径相对于根项目解析。换句话说,首位“:”代表根项目本身。所有其他的冒号是路径分隔符。

这种方法适用于任何任务,所以如果你想知道在一个特定的子项目的任务是什么,只需要thetaskstask, e.g.gradle :services:webservice:tasks.

不管你使用什么技术来执行任务,Gradle会兼顾anysubprojects,它们有依赖关系。你不必担心项目间dependenciesyourself。如果你感兴趣它们是如何配置的,你可以阅读关于编写多项目构建的文章。

还有一件事要注意。当你使用Gradle封包,第一种方法不运行,你必须要检查指定路径的封包脚本是不是在项目的根目录。例如,如果你在WebService子目录,你的到../../ gradlew建立

这就是真正需要了解关于多项目构建作为构建用户的全部信息。你现在可以确定是否建立了多项目,你会发现它的结构。最后,你可以执行taskswithin执行项目。


       

不要错过




以上是关于Gradle教程第一章:1.6多项目建立的主要内容,如果未能解决你的问题,请参考以下文章

Gradle教程第一章:1.7持续完善

Gradle教程第一章:1.8复合构建

Gradle教程第一章:1.5依赖关系

Gradle教程第一章:1.4构建与打包

Gradle教程第一章:安装

Gradle教程第一章:2.0故障排查