Cómo crear un proyecto Java gradle

120

¿Cómo crear un proyecto Java Gradle desde la línea de comandos?

Debería crear un diseño de carpeta maven estándar como en la imagen de abajo.

Java Gradle creado con el complemento Eclipse

ACTUALIZAR:

.1. De http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html Necesito crear un archivo build.gradlecon 2 líneas

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

.2. Agregue a la build.gradletarea a continuación, luego ejecutegradle create-dirs

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

.3. Luego ejecute gradle eclipse(o la cadena correspondiente a otro complemento IDE configurado)

Entonces, ¿hay forma de hacerlo con un solo comando?

Paul Verest
fuente
1
¿Alguien sabe el equivalente para el esqueleto del proyecto java de IntelliJ?
Beezer
Creo que la respuesta es evidente arriba ...._ o la cadena correspondiente a otro complemento IDE configurado_: =)
Beezer

Respuestas:

283

Para crear un proyecto Java: cree un nuevo directorio de proyecto, salte a él y ejecute

gradle init --type java-library

Se compilarán las carpetas de origen y un archivo de compilación de Gradle (incluido un contenedor).

Miguel
fuente
8
Como se menciona en otras respuestas, la documentación sobre el complemento de inicio de compilación se puede encontrar aquí: gradle.org/docs/current/userguide/build_init_plugin.html
Paul
es muy bueno. @Mike En eclipse, antes de hacer esto, el proyecto java debe convertirse al proyecto gradle. Entonces, ¿cómo puedo configurar las carpetas de origen automáticamente?
verystrongjoe
Una cosa importante. Debe tener la versión de Gradle con el complemento de inicio incluido. Me tomó mucho tiempo descubrir qué le pasaba a mi gradle.
Юрій Мазуревич
6
Usomkdir -p src/{main,test}/{java,resources}
Ortwin Angermeier
1
gradle wrapper --gradle-version 4.1 init --type java-librarySi desea especificar la versión de contenedor
deFreitas
19

Los chicos de Gradle están haciendo todo lo posible para resolver todos (y) nuestros problemas ;-). Recientemente (desde 1.9) agregaron una nueva característica (incubando): el complemento "build init".

Ver: compilar la documentación del complemento init

habitacionesg
fuente
13

Desafortunadamente, no puede hacerlo con un solo comando. Hay un problema abierto para la función .

Actualmente tendrás que hacerlo a mano. Si necesita hacerlo con frecuencia, puede crear un complemento de Gradle personalizado o simplemente preparar su propio esqueleto de proyecto y copiarlo cuando sea necesario.

EDITAR

El problema de JIRA mencionado anteriormente se resolvió a partir del 1 de mayo de 2013 y se solucionó en 1.7-rc-1. La documentación sobre Build Init Plugin está disponible, aunque indica que esta función aún se encuentra en el ciclo de vida de "incubación".

Rodion
fuente
12

Finalmente, después de comparar todas las soluciones, creo que comenzar desde el build.gradlearchivo puede ser conveniente.

La distribución de Gradle tiene una samplescarpeta con muchos ejemplos, y hay un gradle init --type basiccomando y consulte el Capítulo 47. Build Init Plugin . Pero todos necesitan algunas modificaciones.

También puede usar la plantilla a continuación, luego ejecutargradle 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"
}

El resultado es como el siguiente.

visión de conjunto

Eso se puede usar sin ningún complemento de Gradle para Eclipse,
o con (Enide) Gradle para Eclipse, Jetty, alternativa de Android a Gradle Integration for Eclipse

caja de edición

Paul Verest
fuente
1

Si está utilizando Eclipse, para un proyecto existente (que tiene un build.gradlearchivo) simplemente puede escribir gradle eclipselo que creará todos los archivos y carpetas de Eclipse para este proyecto.

Se encarga de todas las dependencias por usted y también las agrega a la ruta de recursos del proyecto en Eclipse.

Pelpotronic
fuente
2
Esto no crea carpetas de origen. Si no se crearon antes, las configuraciones de Eclipse no estarán completas. Sin embargo, muchas gracias, agregado como paso .3
Paul Verest
1

Podría manejarlo usando un método maravilloso build.gradlepara crear todas las carpetas de origen para java, recursos y pruebas. Luego lo configuré para que se ejecute antes de la gradle eclipsetarea.

eclipseClasspath.doFirst {
    initSourceFolders()
}

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

Ahora podemos configurar un nuevo proyecto Gradle Java EE para eclipse con un solo comando. Pongo este ejemplo en GitHub

Edy Segura
fuente
-2

Intenté con Eclipse Neon.1 y 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

ingrese la descripción de la imagen aquí

En Windows 10 con la versión de 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)

Y falló estrepitosamente como se puede ver en Eclipse. Pero navegó como un águila volando en Intellij ... No conozco a Intellij, y soy un gran fanático del eclipse, pero tipos comunes, esto significa que NADIE teste Neon.1 para los casos de uso más simples ... para importar un proyecto de Gradle. Eso no es suficientemente bueno. Voy a cambiar a Intellij para proyectos de gradle:

ingrese la descripción de la imagen aquí

Beezer
fuente
1
La pregunta ha sido: ¿Cómo crear un proyecto Java Gradle desde la línea de comandos?
Paul Verest
¿Cuál es el problema de ser útil en este contexto, Pablo? Está en el mismo contexto. Entonces, ¿por qué no mostrar que eclipse actualmente tiene problemas para importarlo?
Beezer