Como criar um projeto Java gradle

120

Como criar um projeto Java Gradle a partir da linha de comando?

Ele deve criar um layout de pasta padrão, como na figura abaixo.

Java Gradle criado com o plug-in Eclipse

ATUALIZAR:

.1 Em http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html , preciso criar um arquivo build.gradlecom 2 linhas

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

.2. Adicione à build.gradletarefa abaixo e executegradle create-dirs

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

.3 Em seguida, execute gradle eclipse(ou a string correspondente a outro plug-in IDE configurado)

Então, existe uma maneira de fazer isso em um comando?

Paul Verest
fonte
1
Alguém sabe o equivalente ao IntelliJ java project skeleton?
Beezer
Acho que a resposta é flagrantemente acima ...._ ou string correspondente a outra IDE plug-in configured_: =)
Beezer

Respostas:

283

Para criar um projeto Java: crie um novo diretório de projeto, pule para ele e execute

gradle init --type java-library

Pastas de origem e um arquivo de compilação Gradle (incluindo um wrapper) serão compilados.

Mike
fonte
8
Como mencionado em outras respostas, a documentação no plug-in build init pode ser encontrada aqui: gradle.org/docs/current/userguide/build_init_plugin.html
Paul
é muito bom. @ Mike No eclipse, antes de fazer isso, o projeto java deve ser convertido no projeto gradle. Então, como posso definir as pastas de origem automaticamente?
verystrongjoe
Uma coisa importante. Você deve ter a versão Gradle com o plugin init incluído. Demorei muito tempo para descobrir o que havia de errado com meu aluno.
Юрій Мазуревич
6
Usemkdir -p src/{main,test}/{java,resources}
Ortwin Angermeier 23/08/16
1
gradle wrapper --gradle-version 4.1 init --type java-librarySe você quiser especificar a versão invólucro
DeFreitas
19

O pessoal da gradle está fazendo o possível para resolver todos os problemas ;-). Eles recentemente (desde 1.9) adicionaram um novo recurso (incubação): o plug-in "build init".

Consulte: documentação do plug-in init

roomsg
fonte
13

Infelizmente você não pode fazer isso em um comando. Há um problema em aberto para o próprio recurso .

Atualmente, você terá que fazer isso manualmente. Se você precisar fazer isso com frequência, poderá criar um plugin de gradle personalizado ou apenas preparar seu próprio esqueleto do projeto e copiá-lo quando necessário.

EDITAR

O problema do JIRA mencionado acima foi resolvido em 1 de maio de 2013 e corrigido em 1.7-rc-1. A documentação no plug - in Build Init está disponível, embora indique que esse recurso ainda está no ciclo de vida da "incubação".

rodion
fonte
12

Finalmente, depois de comparar todas as soluções, acho que começar do build.gradlearquivo pode ser conveniente.

A distribuição Gradle possui uma samplespasta com muitos exemplos e há um gradle init --type basiccomando no Capítulo 47. Build Init Plugin . Mas todos eles precisam de alguma edição.

Você também pode usar o modelo abaixo e executargradle 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"
}

O resultado é como abaixo.

Visão geral

Isso pode ser usado sem nenhum plug-in Gradle para Eclipse
ou com (Enide) Gradle para Eclipse, Jetty, alternativa para Android para Gradle Integration for Eclipse

caixa de edição

Paul Verest
fonte
1

Se você estiver usando o Eclipse, para um projeto existente (que possui um build.gradlearquivo), basta digitar o gradle eclipseque criará todos os arquivos e pastas do Eclipse para este projeto.

Ele cuida de todas as dependências para você e as adiciona ao caminho do recurso do projeto no Eclipse.

Pelpotronic
fonte
2
Isso não cria pastas de origem. Se eles não foram criados antes, as configurações do Eclipse não estarão cheias. No entanto, muito obrigado, adicionado como etapa .3
Paul Verest
1

Eu poderia lidar com isso usando um método groovy build.gradlepara criar todas as pastas de origem para java, recursos e teste. Então eu o configurei para executar antes da gradle eclipsetarefa.

eclipseClasspath.doFirst {
    initSourceFolders()
}

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

Agora podemos configurar um novo projeto Java EE gradle para eclipsar com apenas um comando. Eu coloquei este exemplo no GitHub

Edy Segura
fonte
-2

Eu apenas tentei com o Eclipse Neon.1 e 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

insira a descrição da imagem aqui

No Windows 10 com versão 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)

E falhou miseravelmente, como você pode ver no Eclipse. Mas naveguei como uma águia em alta no Intellij ... Eu não conheço o Intellij e um grande fã de eclipse, mas caras comuns, isso significa NINGUÉM testar Neon.1 para os casos de uso mais simples ... para importar um projeto gradle. Isso não é bom o suficiente. Estou mudando para Intellij para projetos gradle:

insira a descrição da imagem aqui

Beezer
fonte
1
A pergunta foi: Como criar um projeto Java Gradle a partir da linha de comando?
Paul Verest
Qual é o problema de ser útil nesse contexto, Paulo? Está no mesmo contexto. Portanto, por que não mostrar que o eclipse atualmente tem um problema ao importá-lo?
Beezer