Comment créer un projet Java Gradle

120

Comment créer un projet Java Gradle à partir de la ligne de commande?

Il devrait créer une disposition de dossier maven standard comme sur l'image ci-dessous.

Java Gradle créé avec le plugin Eclipse

METTRE À JOUR:

.1. Depuis http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html, je dois créer un fichier build.gradleavec 2 lignes

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

.2. Ajouter à la build.gradletâche ci-dessous, puis exécutergradle create-dirs

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

.3. Puis exécutez gradle eclipse(ou la chaîne correspondante vers un autre plugin IDE configuré)

Alors, y a-t-il moyen de le faire en une seule commande?

Paul Verest
la source
1
Quelqu'un connaît-il l'équivalent du squelette du projet IntelliJ Java?
Beezer
Je pense que la réponse est clairement ci-dessus ...._ ou la chaîne correspondante à un autre plugin IDE configuré_: =)
Beezer

Réponses:

283

Pour créer un projet Java: créez un nouveau répertoire de projet, sautez-y et exécutez

gradle init --type java-library

Les dossiers sources et un fichier de construction Gradle (y compris un wrapper) seront compilés.

Mike
la source
8
Comme mentionné dans d'autres réponses, la documentation sur le plugin build init peut être trouvée ici: gradle.org/docs/current/userguide/build_init_plugin.html
Paul
c'est très bien. @Mike Dans eclipse, avant de faire cela, le projet java doit être converti en projet gradle. Ensuite, comment puis-je définir automatiquement les dossiers source?
verystrongjoe
Une chose importante. Vous devez avoir la version Gradle avec le plugin init inclus. Il m'a fallu beaucoup de temps pour comprendre ce qui ne va pas avec mon diplômé.
Юрій Мазуревич
6
Utilisationmkdir -p src/{main,test}/{java,resources}
Ortwin Angermeier
1
gradle wrapper --gradle-version 4.1 init --type java-librarySi vous souhaitez spécifier la version du wrapper
deFreitas
19

Les diplômés font de leur mieux pour résoudre tous (y) nos problèmes ;-). Ils ont récemment (depuis 1.9) ajouté une nouvelle fonctionnalité (incubation): le plugin "build init".

Voir: documentation du plugin build init

chambresg
la source
13

Malheureusement, vous ne pouvez pas le faire en une seule commande. Il y a un problème ouvert pour la fonctionnalité même .

Actuellement, vous devrez le faire à la main. Si vous avez besoin de le faire souvent, vous pouvez créer un plugin de gradle personnalisé ou simplement préparer votre propre squelette de projet et le copier si nécessaire.

ÉDITER

Le problème JIRA mentionné ci-dessus a été résolu depuis le 1er mai 2013 et corrigé dans la 1.7-rc-1. La documentation sur le plugin Build Init est disponible, même si elle indique que cette fonctionnalité est toujours dans le cycle de vie "incubation".

Rodion
la source
12

Enfin après avoir comparé toutes les solutions, je pense que partir d'un build.gradlefichier peut être pratique.

La distribution Gradle a un samplesdossier avec de nombreux exemples, et il y a une commande gradle init --type basicvoir le chapitre 47. Plugin d'initialisation de construction . Mais ils ont tous besoin d'être modifiés.

Vous pouvez également utiliser le modèle ci-dessous, puis exécutergradle 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"
}

Le résultat est comme ci-dessous.

Aperçu

Cela peut être utilisé sans plugin Gradle pour Eclipse,
ou avec (Enide) Gradle pour Eclipse, Jetty, une alternative Android à Gradle Integration pour Eclipse

boîte d'édition

Paul Verest
la source
1

Si vous utilisez Eclipse, pour un projet existant (qui a un build.gradlefichier), vous pouvez simplement taper gradle eclipsequi créera tous les fichiers et dossiers Eclipse pour ce projet.

Il prend en charge toutes les dépendances pour vous et les ajoute également au chemin des ressources du projet dans Eclipse.

Pelpotronic
la source
2
Cela ne crée pas de dossiers source. S'ils n'ont pas été créés auparavant, les configurations Eclipse ne seront pas complètes. Néanmoins, merci beaucoup, ajouté comme étape .3
Paul Verest
1

Je pourrais le gérer en utilisant une méthode groovy build.gradlepour créer tous les dossiers source pour java, ressources et test. Ensuite, je l'ai configuré pour qu'il s'exécute avant la gradle eclipsetâche.

eclipseClasspath.doFirst {
    initSourceFolders()
}

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

Nous pouvons maintenant configurer un nouveau projet gradle Java EE pour éclipser avec une seule commande. J'ai mis cet exemple sur GitHub

Edy Segura
la source
-2

Je viens d'essayer avec Eclipse Neon.1 et Gradle:

------------------------------------------------------------
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

entrez la description de l'image ici

Sur Windows 10 avec la version Java:

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)

Et cela a lamentablement échoué, comme vous pouvez le voir dans Eclipse. Mais j'ai navigué comme un aigle en plein essor dans Intellij ... Je ne connais pas Intellij, et un grand fan d'éclipse, mais des mecs communs, cela signifie que PERSONNE ne teste Neon.1 pour le plus simple des cas d'utilisation ... pour importer un projet gradle. Ce n'est pas assez bon. Je passe à Intellij pour des projets gradle:

entrez la description de l'image ici

Beezer
la source
1
La question a été: comment créer un projet Java Gradle à partir de la ligne de commande?
Paul Verest
Quel est le problème d'être utile dans ce contexte Paul? C'est dans le même contexte. Alors, pourquoi ne pas montrer qu'éclipse a actuellement un problème avec son importation.
Beezer