| 
Ist Gradle auch für die APEX-Projekte? 
DOAG Konferenz 2014 (Nürnberg) 
Oleg Kiriltsev 
Nürnberg, November 2014 
1
| 
Meine Person 
Oleg Kiriltsev 
Diplom Angewandte Informatik, Uni Duisburg-Essen 
Seit März 2013 Junior Berater, MT AG in Ratingen 
Kontaktdaten: 
-E-Mail: oleg.kiriltsev@mt-ag.com 
-Twitter: @OKiriltsev 
DOAG Konferenz 2014 
2
| 
UNSER PORTFOLIO 
BUSINESS INTELLIGENCE SOLUTIONS 
SOCIAL BUSINESS SOLUTIONS 
MOBILE 
SOLUTIONS 
APPLICATION DEVELOPMENT 
INTEGRATION SERVICES 
IT SYSTEM SERVICES 
DATA INTEGRATION 
SELF SERVICE BI 
MOBILE BI 
COLLABORATION 
SEARCH 
SOCIAL 
APPS 
ABLÄUFE 
LOKALISIERUNG 
APEX / ADF JAVA .NET 
STRATEGIE 
ARCHITEKTUR 
SAP HANA 
MANAGED SERVICES BETRIEB MIGRATION 
3
| 
Gradle – was ist das? 
Build-Toolkit basiert auf Groovy DSL 
Sammlung von Tools 
DOAG Konferenz 2014 
4
| 
Gradle – was ist das? 
Build-Toolkit basiert auf Groovy DSL 
Sammlung von Tools 
-Plugins 
-Konfigurationsregel 
-DSL-Erweiterung 
convention over configuration 
Entwickler-Plugins für IDE‘s (Eclips, IDEA, …) 
Unterstützung von Ant-Tasks 
DOAG Konferenz 2014 
5
| 
Gradle-Benutzer 
DOAG Konferenz 2014 
6 
Hibernate 
Grails 
Spring Integration 
Spring Security 
Android
| 
Gradle Wrapper 
Demo 1 
DOAG Konferenz 2014 
7
| 
Gradle Wrapper 
Keine Installation notwendig 
Definition der genauen Gradle-Version 
DOAG Konferenz 2014 
8 
Vorteile
| 
Gradle Wrapper 
task wrapper(type: Wrapper){ 
gradleVersion = '2.2' 
} 
DOAG Konferenz 2014 
9 
Skript
| 
Gradle: Groovy 
Programmiersprache und Skriptsprache 
Groovy wird zum Bytecode kompiliert 
Dynamische und statische Typisierung 
Sehr gute Integration mit der Java-Plattform 
DOAG Konferenz 2014 
10
| 
Kennenlernen von Gradle 
Demo 2: Gradle out the box 
-Tasks 
-Files 
-Custom Tasks 
DOAG Konferenz 2014 
11
| 
Gradle build-Skript 
task hello { 
description= 'Say Hello' 
group = 'Greeting' 
doLast { 
println "Hello from $name task" 
println "Project dir is $projectDir" 
println "Project buildir is $buildDir" 
} 
} 
DOAG Konferenz 2014 
12 
Task Hello
| 
Kennenlernen von Gradle (2) 
Demo 3: Gradle out the box 
-Ant-Tasks 
-Erstellung der Zip-Datei, Hochladen zur Repository 
-Dependencies 
DOAG Konferenz 2014 
13
| 
Gradle build-Skript 
task compress << { 
ant.taskdef(name: 'jscomp', classname: 'com.google.javascript.jscomp.ant.CompileTask', classpath: configurations.closureCompiler.asPath) 
ant.jscomp(compilationLevel: "simple", warning: "verbose", debug: "false", output: "$buildDir/output.js") { 
sources(dir: "$projectDir/js", files: "file1.js file2.js") 
} 
} 
DOAG Konferenz 2014 
14 
Ant-Task Aufruf
| 
Gradle-Plugin 
„Stück“ der wiederverwendbaren Build-Logik 
Demo: Plugin 
Plugin-Class 
Resources 
DOAG Konferenz 2014 
15
| 
Woraus besteht ein APEX-Projekt? 
APEX läuft in Datenbank 
PL/SQL-Skripte 
-DDL 
-DML 
-PL/SQL 
Statische Dateien 
-JavaScript 
-CSS 
-Bilder und Grafiken 
DOAG Konferenz 2014 
16 
Artifacts
| 
Build-Prozess in APEX 
Wie? 
-Per Hand 
-Batch/Shell-Skripte 
Ergebnis: 
-Skript mit den Änderungen 
DOAG Konferenz 2014 
17
| 
Deployment-Prozess in APEX 
Einspielen der PL/SQL-Dateien 
Aktualisierung der statischen Dateien 
DOAG Konferenz 2014 
18
| 
APEX & Gradle 
Erstellung eines Master-Skriptes 
Aktualisierung der DB-Objekte 
DOAG Konferenz 2014 
19
| 
APEX & Gradle 
Demo 4: Gradle und PL/SQL-Skripte 
-Template-Engine 
Änderungen im Template 
-Erstellung eines Master-Skriptes 
DOAG Konferenz 2014 
20 
Demo
| 
Gradle und SQL*Plus 
def db = [un: ''username'', pw :''password'', tns :''tnsname''] 
def sqlplus= """sqlplus ${db.un}/${db.pw}@${db.tns}@script.sql""".execute() 
Quelle: http://altarasystems.com/blog 
Ausgabe von SQL*Plus-Output in der Konsole 
sqlplus.in.eachLine { line -> println line } 
DOAG Konferenz 2014 
21
| 
Gradle-Plugins 
Datenbank 
-Liquibase-Plugin (https://github.com/tlberglund/gradle-liquibase-plugin) 
-Flyway-Plugin (http://flywaydb.org/) 
-DBDeploy mit Hilfe der Ant-Tasks 
JavaScript / CSS 
-Javascript-Plugin (http://eriwen.github.io/gradle-js-plugin) 
combinejs 
minifyjs 
etc. 
DOAG Konferenz 2014 
22
| 
Alternativen 
JavaScript-Welt 
-Gulp 
-Grunt 
-Node.js & Co 
Batch/Shell-Skripte 
DOAG Konferenz 2014 
23
| 
Zusammenfassung 
Sauberes Build-Skript 
DOAG Konferenz 2014 
24
| 
Zusammenfassung 
Sauberes Build-Skript 
Plugins sind wiederverwendbar 
DOAG Konferenz 2014 
25
| 
Zusammenfassung 
Sauberes Build-Skript 
Plugins sind wiederverwendbar 
Groovy läuft in JVM 
DOAG Konferenz 2014 
26
| 
Zusammenfassung 
Sauberes Build-Skript 
Plugins sind wiederverwendbar 
Groovy läuft in JVM 
Gradle ist besser als Batch / Shell etc. 
DOAG Konferenz 2014 
27
| 
Weiße Folien für den eigentlichen Vortrag 
DOAG Konferenz 2014 
28
| 
DOAG Konferenz 2014 
29 
apexmeetups.com
| 
Telefon: Telefax: 
E-Mail: 
www.mt-ag.com 
Vielen Dank… 
Junior Berater APEX Development 
+49 2102 30961-00 
+49 2102 30961-101 
oleg.kiriltsev@mt-ag.com 
Oleg Kiriltsev

Ist Gradle auch für die APEX-Projekte?

  • 1.
    | Ist Gradleauch für die APEX-Projekte? DOAG Konferenz 2014 (Nürnberg) Oleg Kiriltsev Nürnberg, November 2014 1
  • 2.
    | Meine Person Oleg Kiriltsev Diplom Angewandte Informatik, Uni Duisburg-Essen Seit März 2013 Junior Berater, MT AG in Ratingen Kontaktdaten: -E-Mail: oleg.kiriltsev@mt-ag.com -Twitter: @OKiriltsev DOAG Konferenz 2014 2
  • 3.
    | UNSER PORTFOLIO BUSINESS INTELLIGENCE SOLUTIONS SOCIAL BUSINESS SOLUTIONS MOBILE SOLUTIONS APPLICATION DEVELOPMENT INTEGRATION SERVICES IT SYSTEM SERVICES DATA INTEGRATION SELF SERVICE BI MOBILE BI COLLABORATION SEARCH SOCIAL APPS ABLÄUFE LOKALISIERUNG APEX / ADF JAVA .NET STRATEGIE ARCHITEKTUR SAP HANA MANAGED SERVICES BETRIEB MIGRATION 3
  • 4.
    | Gradle –was ist das? Build-Toolkit basiert auf Groovy DSL Sammlung von Tools DOAG Konferenz 2014 4
  • 5.
    | Gradle –was ist das? Build-Toolkit basiert auf Groovy DSL Sammlung von Tools -Plugins -Konfigurationsregel -DSL-Erweiterung convention over configuration Entwickler-Plugins für IDE‘s (Eclips, IDEA, …) Unterstützung von Ant-Tasks DOAG Konferenz 2014 5
  • 6.
    | Gradle-Benutzer DOAGKonferenz 2014 6 Hibernate Grails Spring Integration Spring Security Android
  • 7.
    | Gradle Wrapper Demo 1 DOAG Konferenz 2014 7
  • 8.
    | Gradle Wrapper Keine Installation notwendig Definition der genauen Gradle-Version DOAG Konferenz 2014 8 Vorteile
  • 9.
    | Gradle Wrapper task wrapper(type: Wrapper){ gradleVersion = '2.2' } DOAG Konferenz 2014 9 Skript
  • 10.
    | Gradle: Groovy Programmiersprache und Skriptsprache Groovy wird zum Bytecode kompiliert Dynamische und statische Typisierung Sehr gute Integration mit der Java-Plattform DOAG Konferenz 2014 10
  • 11.
    | Kennenlernen vonGradle Demo 2: Gradle out the box -Tasks -Files -Custom Tasks DOAG Konferenz 2014 11
  • 12.
    | Gradle build-Skript task hello { description= 'Say Hello' group = 'Greeting' doLast { println "Hello from $name task" println "Project dir is $projectDir" println "Project buildir is $buildDir" } } DOAG Konferenz 2014 12 Task Hello
  • 13.
    | Kennenlernen vonGradle (2) Demo 3: Gradle out the box -Ant-Tasks -Erstellung der Zip-Datei, Hochladen zur Repository -Dependencies DOAG Konferenz 2014 13
  • 14.
    | Gradle build-Skript task compress << { ant.taskdef(name: 'jscomp', classname: 'com.google.javascript.jscomp.ant.CompileTask', classpath: configurations.closureCompiler.asPath) ant.jscomp(compilationLevel: "simple", warning: "verbose", debug: "false", output: "$buildDir/output.js") { sources(dir: "$projectDir/js", files: "file1.js file2.js") } } DOAG Konferenz 2014 14 Ant-Task Aufruf
  • 15.
    | Gradle-Plugin „Stück“der wiederverwendbaren Build-Logik Demo: Plugin Plugin-Class Resources DOAG Konferenz 2014 15
  • 16.
    | Woraus bestehtein APEX-Projekt? APEX läuft in Datenbank PL/SQL-Skripte -DDL -DML -PL/SQL Statische Dateien -JavaScript -CSS -Bilder und Grafiken DOAG Konferenz 2014 16 Artifacts
  • 17.
    | Build-Prozess inAPEX Wie? -Per Hand -Batch/Shell-Skripte Ergebnis: -Skript mit den Änderungen DOAG Konferenz 2014 17
  • 18.
    | Deployment-Prozess inAPEX Einspielen der PL/SQL-Dateien Aktualisierung der statischen Dateien DOAG Konferenz 2014 18
  • 19.
    | APEX &Gradle Erstellung eines Master-Skriptes Aktualisierung der DB-Objekte DOAG Konferenz 2014 19
  • 20.
    | APEX &Gradle Demo 4: Gradle und PL/SQL-Skripte -Template-Engine Änderungen im Template -Erstellung eines Master-Skriptes DOAG Konferenz 2014 20 Demo
  • 21.
    | Gradle undSQL*Plus def db = [un: ''username'', pw :''password'', tns :''tnsname''] def sqlplus= """sqlplus ${db.un}/${db.pw}@${db.tns}@script.sql""".execute() Quelle: http://altarasystems.com/blog Ausgabe von SQL*Plus-Output in der Konsole sqlplus.in.eachLine { line -> println line } DOAG Konferenz 2014 21
  • 22.
    | Gradle-Plugins Datenbank -Liquibase-Plugin (https://github.com/tlberglund/gradle-liquibase-plugin) -Flyway-Plugin (http://flywaydb.org/) -DBDeploy mit Hilfe der Ant-Tasks JavaScript / CSS -Javascript-Plugin (http://eriwen.github.io/gradle-js-plugin) combinejs minifyjs etc. DOAG Konferenz 2014 22
  • 23.
    | Alternativen JavaScript-Welt -Gulp -Grunt -Node.js & Co Batch/Shell-Skripte DOAG Konferenz 2014 23
  • 24.
    | Zusammenfassung SauberesBuild-Skript DOAG Konferenz 2014 24
  • 25.
    | Zusammenfassung SauberesBuild-Skript Plugins sind wiederverwendbar DOAG Konferenz 2014 25
  • 26.
    | Zusammenfassung SauberesBuild-Skript Plugins sind wiederverwendbar Groovy läuft in JVM DOAG Konferenz 2014 26
  • 27.
    | Zusammenfassung SauberesBuild-Skript Plugins sind wiederverwendbar Groovy läuft in JVM Gradle ist besser als Batch / Shell etc. DOAG Konferenz 2014 27
  • 28.
    | Weiße Folienfür den eigentlichen Vortrag DOAG Konferenz 2014 28
  • 29.
    | DOAG Konferenz2014 29 apexmeetups.com
  • 30.
    | Telefon: Telefax: E-Mail: www.mt-ag.com Vielen Dank… Junior Berater APEX Development +49 2102 30961-00 +49 2102 30961-101 oleg.kiriltsev@mt-ag.com Oleg Kiriltsev