7. GRADLE INIT
THIS COMMAND WILL GENERATE A BASIC STRUCTURE
AND A MINIMUM SET OF FILES TO GET STARTED.
YOU CAN INVOKE THIS COMMAND ON A MAVEN PROJECT
TO TURN IT INTO A GRADLE PROJECT. MUST MIGRATE
PLUGINS MANUALLY.
14. CHANGE BUILD FILE NAMES
CHANGE BULD FILE NAME FROM build.gradle TO
${project.name}.gradle
USE GROOVY EXPRESSIONS TO FACTORIZE PROJECT
INCLUSIONS IN settings.gradle
15. SETTINGS.GRADLE (1/2)
['common',
'full',
'light'].each
{
name
-‐>
File
subdir
=
new
File(rootDir,
name)
subdir.eachDir
{
dir
-‐>
File
buildFile
=
new
File(dir,
"${dir.name}.gradle")
if
(buildFile.exists())
{
include
"${name}/${dir.name}"
}
}
}
19. KEEP IT DRY
EMBRACE THE POWER OF CONVENTIONS.
BUILD FILE SHOULD DEFINE HOW THE PROJECT DEVIATES
FROM THE PRE-ESTABLISHED CONVENTIONS.
RELY ON SECONDARY SCRIPTS, SEGGREGATED BY
RESPONSIBILITIES.
20. TASK DEFINITIONS
PUT THEM IN SEPARATE FILES.
1. INSIDE SECONDARY SCRIPTS
1. REGULAR TASK DEFINITIONS
2. PLUGIN DEFINITIONS
2. AS PART OF buildSrc SOURCES
3. AS A PLUGIN PROJECT
21. APPLYING PLUGINS
USE THE PLUGINS BLOCK DSL IF IN A SINGLE PROJECT.
PLUGINS BLOCK DOES NOT WORK IN SECONDARY
SCRIPTS.
USE THE OLD-SCHOOL SYNTAX IF IN A MULTI-PROJECT
AND NOT ALL SUBPROJECTS REQUIRE THE SAME
PLUGINS.
34. INCREMENTAL BUILD
ACTIVATED BY ADDING –t TO THE COMMAND LINE.
EXECUTES A GIVEN COMMAND WHENEVER ITS
RESOURCES (INPUTS) CHANGE.
AVOID INVOKING THE CLEAN TASK AS MUCH AS YOU CAN.
41. JDK8 VS JDK7
JOINT COMPILING GROOVY CODE MAY GIVE YOU HEADACHES IF
THE SOURCE/TARGET COMPATIBILITY IS NOT SET RIGHT
tasks.withType(JavaCompile)
{
t
-‐>
t.sourceCompatibility
=
project.sourceCompatibility
t.targetCompatibility
=
project.targetCompatibility
}
tasks.withType(GroovyCompile)
{
t
-‐>
t.sourceCompatibility
=
project.sourceCompatibility
t.targetCompatibility
=
project.targetCompatibility
}
42. JDK8 JAVADOC TROUBLES
JAVADOC IN JDK8 IS VERY PEDANTIC
if
(JavaVersion.current().isJava8Compatible())
{
tasks.withType(Javadoc)
{
options.addStringOption('Xdoclint:none',
'-‐quiet')
}
}
43. COMPILE WARNINGS
ACTIVATE COMPILER WARNINGS AT WILL
tasks.withType(AbstractCompile)
{
if
(rootProject.hasProperty('lint')
&&
rootProject.lint.toBoolean())
{
options.compilerArgs
=
[
'-‐Xlint:all',
'-‐Xlint:deprecation',
'-‐Xlint:unchecked'
]
}
}
$
./gradlew
–Plint=true
compile