39. Architecture CORE UI DOCS OPEN-API WRAPPER api project-reports code-quality groovy java maven osgi war jetty scala eclipse plugins build tools Ant Ivy Maven Ant Tasks checkstyle codeNarc webdav other dependencies librairies tierces Gradle Groovy
40.
41. Les tâches ont une API Copy myCopy = task (myCopy, type:Copy ) myCopy .from (file('resources')) myCopy .into (file('target')) myCopy .include ('**/*.txt', '**/*.xml') task mycopy ( type:Copy ) mycopy{ description ='Copies the resources dir' from (file('resources')) into (file('target')) include ('**/*.txt', '**/*.xml') } task mycopy ( type:Copy ){ description ='Copies the resources dir' from (file('resources')) into (file('target')) include ('**/*.txt', '**/*.xml') } Tâche améliorée CustomTask Copy mycopy
42. Une API très riche task source( type:Jar ){ baseName='source' from sourceSets.main.java } task distrib( type:Zip ){ dependsOn(jar) baseName='dist' from sourceSets.main.java from jar.archivePath } CustomTask Abstract ArchiveTask Zip Jar War Tar SourceTask task javadoc( type: Javadoc ) { source sourceSets.main.allJava } Javadoc
44. Exécution unique et ordonnée compile compileTest test dist > ant test dist compile compileTest test compile compileTest test dist > gradle test dist :compile :compileTest :test :dist
45. Pour un projet Java/JEE CORE UI DOCS OPEN-API WRAPPER api project-reports code-quality groovy java maven osgi war jetty scala eclipse plugins build tools Ant Ivy Maven Ant Tasks checkstyle codeNarc webdav other dependencies librairies tierces Gradle Groovy
46. Build d'une librairie <!-- build.gradle --> usePlugin 'java' archivesBaseName = 'core' version = '3.5' manifest.mainAttributes ( 'Implementation-Version': version ) repositories { mavenCentral() } dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile group: 'junit', name: 'junit', version: '4.+' } > gradle compileJava > gradle jar core-3.5.jar Gradle jar Configuration accessible sous forme de propriétés
84. Gradle et Ant: dans les deux sens (1/2) <!-- build.xml --> <property name="src.dir" value ="src" > <target name="compile" > <echo message="Compile,from Ant"/> </target> <!-- build.gradle --> ant.importBuild 'build.xml' //Complément de la tâche compile compile << { println "Added compiling from Gradle" println "SourceDir: ${ant.properties['src.dir']}" } > gradle compile :compile [ant:echo] Compile, from Ant Added compiling from Gradle SourceDir: src
85. Gradle et Ant: dans les deux sens (2/2) <!-- build.xml --> <target name=" deploy " depends="assemble" > <echo message="Deploy, from Ant"/> </target> <!-- build.gradle --> task assemble ( dependsOn: 'compile' ) << { println 'Assemble, from Gradle' } > gradle deploy :compile [ant:echo] Compile, from Ant Added compiling from Gradle :assemble Assemble, from Gradle :deploy [ant:echo] Deploy, from Ant
86. Gestion multi projet très avancée CORE UI DOCS OPEN-API WRAPPER api project-reports code-quality groovy java maven osgi war jetty scala eclipse plugins build tools Ant Ivy Maven Ant Tasks checkstyle codeNarc webdav other dependencies librairies tierces Gradle Groovy
89. Gestion multi projet (3/3) /web> gradle compileJava :common:compileJava :common:processResources :common:classes :common:jar :common:uploadDefaultInternal :pz:compileJava :biz:biz-auth:compileJava /web/biz/biz-auth> gradle compileJava :common:compileJava :common:processResources :common:classes :common:jar :common:uploadDefaultInternal :biz:biz-auth:compileJava /web/biz/biz-auth> gradle compileJava -a :biz:biz-auth:compileJava Compilation des projets dépendants Utilisation des jars dans le cache
90.
91. Publie dans une infra Maven et Ivy CORE UI DOCS OPEN-API WRAPPER api project-reports code-quality groovy java maven osgi war jetty scala eclipse plugins build tools Ant Ivy Maven Ant Tasks checkstyle codeNarc webdav other dependencies librairies tierces Gradle Groovy
92. Publication dans des repo Ivy usePlugin 'java' version='1.0' uploadArchives{ repositories{ flatDir( dirs:'destRepo') } } IVY API Gradle Repository Ivy Artifacts + meta Ivy > gradle uploadArchives upload Archives
93. Publication dans des repo Maven usePlugin 'java' usePlugin 'maven' group= 'org.jug.normandyjug' archivesBaseName= 'artefact-ex' version='1.0-SNAPSHOT' uploadArchives { repositories .mavenDeployer { snapshotRepository (url: "http://serveur/archiva/repository/snapshots") } > gradle install > gradle uploadArchives Repository Maven loca l Repository Maven distant Maven Ant Tasks Gradle Artifacts + meta Maven Artifacts + meta Maven install upload Archives