So erstellen Sie ein Java-Gradle-Projekt

120

Wie erstelle ich ein Java Gradle-Projekt über die Befehlszeile?

Es sollte ein Standardlayout für Maven-Ordner wie auf dem Bild unten erstellt werden.

Java Gradle erstellt mit Eclipse Plugin

AKTUALISIEREN:

.1. Von http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html muss ich eine Datei build.gradlemit 2 Zeilen erstellen

apply plugin: 'java'
apply plugin: 'eclipse'

.2. Zur folgenden build.gradleAufgabe hinzufügen, dann ausführengradle create-dirs

task "create-dirs" << {
   sourceSets*.java.srcDirs*.each { it.mkdirs() }
   sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}

.3. Führen Sie dann aus gradle eclipse(oder eine entsprechende Zeichenfolge für ein anderes konfiguriertes IDE-Plugin).

Gibt es also eine Möglichkeit, dies in einem Befehl zu tun?

Paul Verest
quelle
1
Kennt jemand das Äquivalent für das IntelliJ Java-Projektskelett?
Beezer
Ich denke, die Antwort ist deutlich über ...._ oder der entsprechenden Zeichenfolge für ein anderes IDE-Plugin konfiguriert_: =)
Beezer

Antworten:

283

So erstellen Sie ein Java-Projekt: Erstellen Sie ein neues Projektverzeichnis, springen Sie hinein und führen Sie es aus

gradle init --type java-library

Quellordner und eine Gradle-Build-Datei (einschließlich eines Wrappers) werden erstellt.

Mike
quelle
8
Wie in anderen Antworten erwähnt, finden Sie die Dokumentation zum Build-Init-Plugin hier: gradle.org/docs/current/userguide/build_init_plugin.html
Paul
es ist sehr gut. @Mike In Eclipse muss zuvor das Java-Projekt in das Gradle-Projekt konvertiert werden. Wie kann ich dann die Quellordner automatisch festlegen?
Verystrongjoe
Eine wichtige Sache. Sie müssen die Gradle-Version mit dem Init-Plugin haben. Ich habe viel Zeit gebraucht, um herauszufinden, was mit meinem Gradle nicht stimmt.
27рій Мазуревич
6
Verwenden Siemkdir -p src/{main,test}/{java,resources}
Ortwin Angermeier
1
gradle wrapper --gradle-version 4.1 init --type java-libraryWenn Sie die Wrapper-Version angeben möchten
deFreitas
19

Die Gradle-Jungs geben ihr Bestes, um alle unsere Probleme zu lösen ;-). Sie haben kürzlich (seit 1.9) eine neue Funktion (Inkubation) hinzugefügt: das Plugin "build init".

Siehe: Dokumentation zum Build-Init-Plugin

Zimmerg
quelle
13

Leider können Sie dies nicht mit einem Befehl tun. Es gibt ein offenes Problem für genau diese Funktion .

Derzeit müssen Sie es von Hand tun. Wenn Sie dies häufig tun müssen, können Sie ein benutzerdefiniertes Gradle-Plugin erstellen oder einfach Ihr eigenes Projektskelett vorbereiten und es bei Bedarf kopieren.

BEARBEITEN

Das oben erwähnte JIRA-Problem wurde zum 1. Mai 2013 behoben und in 1.7-rc-1 behoben. Die Dokumentation zum Build Init Plugin ist verfügbar, weist jedoch darauf hin, dass sich diese Funktion noch im "Inkubations" -Lebenszyklus befindet.

rodion
quelle
12

Nachdem ich alle Lösungen verglichen habe, denke ich, dass build.gradlees praktisch sein kann, von einer Datei aus zu beginnen.

Die Gradle-Distribution enthält einen samplesOrdner mit vielen Beispielen, und es gibt einen gradle init --type basicBefehl, siehe Kapitel 47. Build Init Plugin . Aber alle müssen bearbeitet werden.

Sie können auch die folgende Vorlage verwenden und dann ausführengradle initSourceFolders eclipse

/*
* Nodeclipse/Enide build.gradle template for basic Java project
*   https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.enide.editors.gradle/docs/java/basic/build.gradle
* Initially asked on
*   http://stackoverflow.com/questions/14017364/how-to-create-java-gradle-project
* Usage
*   1. create folder (or general Eclipse project) and put this file inside
*   2. run `gradle initSourceFolders eclipse` or `gradle initSourceFolders idea`
* @author Paul Verest; 
* based on `gradle init --type basic`, that does not create source folders 
*/

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

task initSourceFolders { // add << before { to prevent executing during configuration phase
   sourceSets*.java.srcDirs*.each { it.mkdirs() }
   sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

// In this section you declare where to find the dependencies of your project
repositories {
    // Use Maven Central for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    mavenCentral()
}

// In this section you declare the dependencies for your production and test code
dependencies {
    //compile fileTree(dir: 'libs', include: '*.jar')
    // The production code uses the SLF4J logging API at compile time
    //compile 'org.slf4j:slf4j-api:1.7.5'

    // Declare the dependency for your favourite test framework you want to use in your tests.
    // TestNG is also supported by the Gradle Test task. Just change the
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
    // 'test.useTestNG()' to your build script.
    testCompile "junit:junit:4.11"
}

Das Ergebnis ist wie unten.

Überblick

Dies kann ohne Gradle-Plugin für Eclipse
oder mit (Enide) Gradle für Eclipse, Jetty, Android- Alternative zu Gradle Integration für Eclipse verwendet werden

Bearbeitungsfeld

Paul Verest
quelle
1

Wenn Sie Eclipse verwenden, können Sie für ein vorhandenes Projekt (das eine build.gradleDatei enthält) einfach Folgendes gradle eclipseeingeben, um alle Eclipse-Dateien und -Ordner für dieses Projekt zu erstellen.

Es kümmert sich um alle Abhängigkeiten für Sie und fügt sie auch dem Projektressourcenpfad in Eclipse hinzu.

Pelpotronic
quelle
2
Dadurch werden keine Quellordner erstellt. Wenn sie zuvor nicht erstellt wurden, sind die Eclipse-Konfigurationen nicht voll. Trotzdem vielen Dank, hinzugefügt als Schritt .3
Paul Verest
1

Ich könnte es mit einer groovigen Methode handhaben build.gradle, um alle Quellordner für Java, Ressourcen und Test zu erstellen. Dann habe ich es so eingestellt, dass es vor der gradle eclipseAufgabe ausgeführt wird.

eclipseClasspath.doFirst {
    initSourceFolders()
}

def initSourceFolders() {
    sourceSets*.java.srcDirs*.each { it.mkdirs() }
    sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}

Jetzt können wir ein neues Gradle Java EE-Projekt einrichten, um mit nur einem Befehl eine Sonnenfinsternis zu erzielen. Ich habe dieses Beispiel bei GitHub gestellt

Edy Segura
quelle
-2

Ich habe es gerade mit Eclipse Neon.1 und Gradle versucht:

------------------------------------------------------------
Gradle 3.2.1
------------------------------------------------------------

Build time:   2016-11-22 15:19:54 UTC
Revision:     83b485b914fd4f335ad0e66af9d14aad458d2cc5

Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_112 (Oracle Corporation 25.112-b15)
OS:           Windows 10 10.0 amd64

Geben Sie hier die Bildbeschreibung ein

Unter Windows 10 mit Java-Version:

C:\FDriveKambiz\repo\gradle-gen-project>java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

Und es ist kläglich gescheitert, wie Sie in Eclipse sehen können. Aber segelte wie ein hochfliegender Adler in Intellij ... Ich kenne Intellij nicht und bin ein großer Fan von Eclipse, aber gewöhnliche Typen. Dies bedeutet, dass NIEMAND Neon.1 für die einfachsten Anwendungsfälle testet ... um ein Gradle-Projekt zu importieren. Das ist nicht gut genug Ich wechsle für Gradle-Projekte zu Intellij:

Geben Sie hier die Bildbeschreibung ein

Beezer
quelle
1
Die Frage war: Wie erstelle ich ein Java Gradle-Projekt über die Befehlszeile?
Paul Verest
Was ist das Problem, wenn man in diesem Zusammenhang hilfreich ist, Paul? Es ist im gleichen Kontext. Zeigen Sie also, dass Eclipse derzeit Probleme beim Importieren hat.
Beezer