- Mastering Gradle
- Mainak Mitra
- 463字
- 2021-07-16 20:49:34
Start up script
Consider this scenario, for each of your Gradle projects you have a dependency on a local in-house jar files. Additionally, you want to set some common environment variables for each of your Gradle projects (such as GRADLE_OPTS
).
A simple solution is to add the jar file in the dependency closure. An alternate solution could be to create one common build file and include this common file in each of the build files.
The simplest solution Gradle provides for these kinds of problems by introducing the initialization script.
Initialization scripts are no special files, but a Gradle script with the .gradle
extension. However, this will execute every time before any of your build files execute.
Some of the uses of the initialization script are as follows:
- Downloading some common jars for each of your projects
- Performing common environment configuration related to system details and/or user details.
- Registering listeners and loggers.
So, how does Gradle find these initialization script(s)? There are multiple ways to define the initialization script which are as follows:
- All the files with
.gradle
extension under<USER_HOME>/.gradle/init.d
directory are treated as initialization scripts. Gradle will execute all the.gradle
files under this directory before the execution of any Gradle build script. - Files named
init.gradle
under<USER_HOME>/.gradle/
are treated as an initialization script. - All the files with the
.gradle
extension under<GRADLE_HOME>/init.d/
directory. - You can even specify any Gradle file as the initialization script with
-I <file name>
or--init-script <file name>
.
Following is a sample init
script.
println "Hello from init script" projectsLoaded { rootProject.allprojects { buildscript { repositories { maven { url "http://central.maven.org/maven2/" } } dependencies { classpath group: 'javax.mail', name: 'javax.mail-api', version: '1.4.5' } } } }
Copy and paste the preceding code and save it as init.gradle
file under any of the preceding mentioned paths. The println
statement is intentionally added in this file to help you understand the execution cycle of the init
script. Whenever you execute any Gradle script from a directory, you will see Hello from init script
. Apart from printing Hello from init script
, this script also downloads javax.mail-api-1.4.5.jar
in the Gradle cache when the script is executed for the first time. It will not download this library again, unless there is a change in the file in the repository. If you don't understand what a cache is, don't worry. You will learn more about cache management in the later section of this chapter. Remember, sometimes defining too many configurations in the init script could be problematic. Specifically, debugging could be difficult because the projects are no longer self-contained.
- Oracle Database In-Memory(架構與實踐)
- 飛槳PaddlePaddle深度學習實戰
- Protocol-Oriented Programming with Swift
- 深入分布式緩存:從原理到實踐
- Windows Embedded CE 6.0程序設計實戰
- HTML+CSS+JavaScript網頁設計從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- Windows Phone 8 Game Development
- C++ System Programming Cookbook
- 愛上C語言:C KISS
- Advanced Python Programming
- Three.js權威指南:在網頁上創建3D圖形和動畫的方法與實踐(原書第4版)
- 基于MATLAB的控制系統仿真及應用
- 計算機系統解密:從理解計算機到編寫高效代碼
- 和孩子一起學編程:用Scratch玩Minecraft我的世界
- 可視化H5頁面設計與制作:Mugeda標準教程