- Download Gradle
- An beliebiger Stelle entpacken
- GRADLE_HOME Variable auf Verzeichnis setzen
- <GRADLE_HOME>/bin in PATH-Variable mit aufnehmen
------------------------------------------------------------ Gradle 0.8 ------------------------------------------------------------ Gradle buildtime: Monday, September 28, 2009 2:01:59 PM CEST Groovy: 1.6.4 Ant: Apache Ant version 1.7.0 compiled on December 13 2006 Ivy: 2.1.0-rc2 Java: 1.6.0_14 JVM: 14.0-b16 JVM Vendor: Sun Microsystems Inc. OS Name: Windows XP
Analog zur pom.xml bei Maven gibt es bei Gradle dei Datei build.gradle, welches im Projektverzeichnis liegen muss.
Einstellungen
Projektespezifische Daten:
group='de.ronnyfriedland version='1.0-SNAPSHOT'
Definieren von Tasks: | Zusätzlich zu vordefinierte Tasks (z.B. durch Plugins), können eigene Tasks angelegt werden und in den Buildprozess integriert werden.
defaultTasks 'hello' task hello << { println 'Hello world!' }
Tasks - Abhängigkeiten:
Es ist möglich, das vor einem bestimmten Task ein anderer Task aufgerufen werden soll. Dafür genügt folgende Zeile:
install.dependsOn test
Damit wird festgelegt, dass vor dem Ausführen des Tasks "install" immer der Task "test" ausgeführt werden muss.
Plugins
- java: Java Projekte
- groovy: Groovy Projekte
- maven: Maven Integration
- ...
Repository zu installieren. | Der aufzurufende Task dafür ist gradle install.
Maven Repositories für Projekt-Dependencies definieren
repositories { //if jars are available in a folder called 'lib' within the project //flatDir name: 'localRepository', dirs: 'lib' //local maven repository mavenRepo urls: 'file:' + new File('d:/Development/Build/apache-maven-2.1.0/repository') //maven central repo mavenCentral() }
Dependencies
dependencies { compile group: 'commons-collections', name: 'commons-collections', version: '3.2' testCompile "junit:junit:3.8.1" }
kompilieren commons-collections. | Für die Angabe der Dependencies sind beide Schreibweisen zulässig. Das zweite Format hat dabei den Aufbau: "<group>:<name>:<version>".
Multiprojekt
Auch mit gradle ist es möglich, in einem Projekt mehrere Subprojekte anzulegen. Dafür sind die folgenden Schritte nötig.
Achtung: Ich hatte Problem, sobald der Projektname Großbuchstaben enthielt. Die POM für das Maven Repository enthielt dabei als ArtifactId diese Großbuchstaben und das Modul wurde nicht mehr als Dependency gefunden.
Ordnerstruktur
| hauptprojekt | \| | \|-- subprojekt1 | \|-- subprojekt2 | ...
Einrichten
Im Hauptprojekt eine Datei settings.gradle anlegen. Diese enthält die Subprojekte:
include "subprojekt1" include "subprojekt2"
ALLE Projekte (allprojects) gilt, oder nur für die Subprojekte (subprojects). | In den Bereich allprojects gehört die Repositorykonfiguration, die Version, die Plugins, etc. ... | Unter subprojects habe ich die Dependencies angegeben, welche in allen Subprojekten genutzt werden.
allprojects { version = '1.0-SNAPSHOT' group = 'de.ronnyfriedland.test' usePlugin 'maven' //install artifacts to maven repo: "gradle install" usePlugin('java') usePlugin('eclipse') //create exlipse project files: "gradle eclipse" defaultTasks 'clean', 'test', 'install' sourceCompatibility = 1.5 targetCompatibility = 1.5 repositories { //if jars are available in a folder called 'lib' within the project //flatDir name: 'localRepository', dirs: 'hauptprojekt/lib' //local maven repository mavenRepo(urls: 'file:' + new File('d:/Development/Build/apache-maven-2.1.0/repository')) //maven central repo mavenCentral() } } subprojects { dependencies { compile group: 'log4j', name: 'log4j', version: '1.2.14' compile group: 'commons-logging', name: 'commons-logging', version: '1.1.1' compile group: 'commons-collections', name: 'commons-collections', version: '3.2.1' testCompile "junit:junit:4.4" } } artifactId = 'hauptprojekt'
In den jeweiligen build.gradle - Dateien der Subprojekte werden dann spezielle Dependencies nur für das Projekte definiert. Hier ein Beispielt für Subprojekt1:
artifactId = 'subprojekt1' dependencies { compile project(':subprojekt2') compile group: 'opensymphony', name: 'quartz', version: '1.6.3' }
In den Dependencies kann auch das eigene Subprojekt angegeben werden. In diesem Fall kommt es nicht aus dem Maven Repository.