【转载】Skip Building Project Dependencies

Friday, December 5, 2014

 

Gradle Goodness: Skip Building Project Dependencies

If we use Gradle in a multi-module project we can define project dependencies between modules. Gradle uses the information from the project dependencies to determine which tasks need to be run. For example if module B depends on module A and we want to build module B, Gradle will also build module A for us, because module B depends on it. But if we know for sure that module A is up to date and has not changed, we can also instruct Gradle to skip building module A, when we build module B.

Let's start with the following module structure, where each module depends on the module above it. So module services depends on common and module web depends on services:

.

├── common

├── services

└── web

When we want to build the service module we go to the services directory and execute the build task and we get the following output:

$ gradle build

:common:compileJava

:common:processResources

:common:classes

:common:jar

:services:compileJava

:services:processResources

:services:classes

:services:jar

:services:assemble

:services:compileTestJava

:services:processTestResources

:services:testClasses

:services:test

:services:check

:services:build

 

BUILD SUCCESSFUL

 

Total time: 8.013 secs

We see in the output that first the common module is build, because the services module depends on it. But if we work on this project and we know for sure the common module is up to date and has not changed since the last build (for example we didn't checkout new sources from version control or changed sources in the common module ourselves), then we can skip building the common module. We use the command line option -a or--no-rebuild to tell Gradle to skip project dependencies.

When we run the build task from the services directory using the command line option -a we get the following output:

$ gradle -a build

:services:compileJava

:services:processResources

:services:classes

:services:jar

:services:assemble

:services:compileTestJava

:services:processTestResources

:services:testClasses

:services:test

:services:check

:services:build

 

BUILD SUCCESSFUL

 

Total time: 5.626 secs

This time only the services module is build, which also speeds up the build proces. Still this should only be used if we know ourselves the project dependencies are up to date.

Written with Gradle 2.2.1.

 

11.2. 排除任务

11.2. Excluding tasks

你可以用命令行选项-x来排除某些任务,让我们用上面的例子来示范一下.
You can exclude a task from being executed using the -x command-line option and providing the name of the task to exclude. Let's try this with the sample build file above.

 

例 11.2. 排除任务.
Example 11.2. Excluding tasks

gradle dist -x test的输出结果.
Output of gradle dist -x test

> gradle dist -x test
:compile
compiling source
:dist
building the distribution

BUILD SUCCESSFUL

Total time: 1 secs

可以看到,test任务并没有被调用,即使他是dist任务的依赖. 同时test任务的依赖任务compileTest也没有被调用,而像 compiletest和其它任务同时依赖的任务仍然会被调用.
You can see from the output of this example, that the test task is not executed, even though it is a dependency of the dist task. You will also notice that the test task's dependencies, such as compileTest are not executed either. Those dependencies of test that are required by another task, such ascompile , are still executed.

http://pkaq.github.io/gradledoc/docs/userguide/ch11/tutorial_gradle_command_line.html

 

转载于:https://my.oschina.net/u/199776/blog/532238

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值