131 votes

Comment créer un projet Java gradle

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

Il devrait créer disposition standard des dossiers maven comme sur la photo ci-dessous.

Java Gradle created with Eclipse plugin

UPDATE :

.1. De http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html J'ai besoin de créer un fichier build.gradle avec 2 lignes

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

.2. Ajouter à build.gradle ci-dessous, puis exécutez gradle create-dirs

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

.3. Ensuite, exécutez gradle eclipse (ou la chaîne correspondante à l'autre plugin IDE configuré)

Y a-t-il un moyen de le faire en une seule commande ?

301voto

Mike Points 111

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

gradle init --type java-library

Les dossiers sources et un fichier de construction Gradle (incluant un wrapper) seront construits.

19voto

roomsg Points 328

Les gars de Gradle font de leur mieux pour résoudre tous nos problèmes ;-). Ils ont récemment (depuis la 1.9) ajouté une nouvelle fonctionnalité (en cours d'incubation) : le plugin "build init".

Voir : documentation du plugin build init

13voto

rodion Points 6275

Malheureusement, vous ne pouvez pas le faire en une seule commande. Il y a une question pour la caractéristique même .

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

EDIT

Le problème JIRA mentionné ci-dessus a été résolu, à partir du 1er mai 2013, et corrigé dans la version 1.7-rc-1. La documentation sur le Plugin Build Init est disponible, bien qu'il indique que cette fonctionnalité est encore dans le cycle de vie "en incubation".

13voto

Paul Verest Points 3798

Enfin, après avoir comparé toutes les solutions, je pense qu'en partant de build.gradle peut être pratique.

La distribution Gradle a samples avec beaucoup d'exemples, et il y a gradle init --type basic comande voir Chapitre 47. Plugin Build Init . Mais ils ont tous besoin d'être modifiés.

Vous pouvez utiliser modèle ci-dessous, puis exécutez gradle 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.

overview

Cela peut être utilisé sans aucun plugin Gradle pour Eclipse,
ou avec (Enide) Gradle pour Eclipse, Jetty, Android alternative à Intégration de Gradle pour Eclipse

editbox

2voto

jafarmlp Points 999

Voici ce qui a fonctionné pour moi Je voulais créer une application java hello world avec gradle avec les exigences suivantes.

  1. L'application a des dépendances jar externes
  2. Créez un gros jar exécutable avec toutes les classes dépendantes copiées dans le jar.
  3. Créer un jar exécutable avec toutes les bibliothèques dépendantes copiées dans un répertoire "dependencies" et ajouter le classpath dans le manifest.

Voici la solution :

  • Installer la dernière version de gradle ( vérifier gradle --version . J'ai utilisé gradle 6.6.1)
  • Créez un dossier et ouvrez un terminal
  • Exécuter gradle init --type java-application
  • Ajoutez les données requises dans la ligne de commande
  • Importer le projet dans un IDE (IntelliJ ou Eclipse)
  • Modifiez le fichier build.gradle avec les tâches suivantes.

Bocal de graisse exécutable

task fatJar(type: Jar) {
 clean
 println("Creating fat jar")
 manifest {
    attributes 'Main-Class': 'com.abc.gradle.hello.App'
 }
 archiveName "${runnableJar}"
 from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
 } with jar
 println("Fat jar is created")
}

Copier les dépendances

task copyDepends(type: Copy) {
   from configurations.default
   into "${dependsDir}"
}

Créer un jar avec les dépendances du classpath dans le manifeste

task createJar(type: Jar) {
   println("Cleaning...")
   clean
   manifest {
    attributes('Main-Class': 'com.abc.gradle.hello.App',
            'Class-Path': configurations.default.collect { 'dependencies/' + 
             it.getName() }.join(' ')
    )
}
  from {
      configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
  } with jar
  println "${outputJar} created"
}

Voici le build.gradle complet

plugins {
    id 'java'
   id 'application'
}
repositories {
    mavenCentral()
}
dependencies {
  implementation 'org.slf4j:slf4j-api:1.7.30'
  implementation 'ch.qos.logback:logback-classic:1.2.3'
  implementation 'ch.qos.logback:logback-core:1.2.3'
  testImplementation 'junit:junit:4.13'
}
def outputJar = "${buildDir}/libs/${rootProject.name}.jar"
def dependsDir = "${buildDir}/libs/dependencies/"
def runnableJar = "${rootProject.name}_fat.jar";

//Create runnable fat jar
task fatJar(type: Jar) {
   clean
   println("Creating fat jar")
   manifest {
    attributes 'Main-Class': 'com.abc.gradle.hello.App'
  }
  archiveName "${runnableJar}"
  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
  } with jar
  println("Fat jar is created")
}

//Copy dependent libraries to directory.
task copyDepends(type: Copy) {
 from configurations.default
 into "${dependsDir}"
}

//Create runnable jar with dependencies
task createJar(type: Jar) {
 println("Cleaning...")
 clean
 manifest {
    attributes('Main-Class': 'com.abc.gradle.hello.App',
            'Class-Path': configurations.default.collect { 'dependencies/' + 
            it.getName() }.join(' ')
    )
 }
 from {
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
 } with jar
  println "${outputJar} created"
}

Commandes de construction Gradle
Créer un pot de graisse : gradle fatJar
Copier les dépendances : gradle copyDepends
Créer un jar exécutable avec des dépendances : gradle createJar

Plus de détails peuvent être lus ici : https://jafarmlp.medium.com/a-simple-java-project-with-gradle-2c323ae0e43d

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X