Jak stworzyć projekt gradle w Javie

120

Jak stworzyć projekt Java Gradle z wiersza poleceń?

Powinien stworzyć standardowy układ folderów maven, jak na poniższym obrazku.

Java Gradle utworzona za pomocą wtyczki Eclipse

AKTUALIZACJA:

.1. Z http://www.gradle.org/docs/current/userguide/tutorial_java_projects.html Muszę utworzyć plik build.gradlez 2 wierszami

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

.2. Dodaj do build.gradlezadania poniżej, a następnie wykonajgradle create-dirs

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

.3. Następnie uruchom gradle eclipse(lub odpowiedni ciąg do innej skonfigurowanej wtyczki IDE)

Czy jest więc sposób, aby to zrobić jednym poleceniem?

Paul Verest
źródło
1
Czy ktoś zna odpowiednik szkieletu projektu IntelliJ java?
Beezer
Myślę, że odpowiedź jest rażąco powyżej ...._ lub odpowiadający ciąg do innej skonfigurowanej wtyczki
IDE_

Odpowiedzi:

283

Aby utworzyć projekt Java: utwórz nowy katalog projektu, wskocz do niego i wykonaj

gradle init --type java-library

Zostaną utworzone foldery źródłowe i plik kompilacji Gradle (w tym opakowanie).

Mikrofon
źródło
8
Jak wspomniano w innych odpowiedziach, dokumentację dotyczącą wtyczki build init można znaleźć tutaj: gradle.org/docs/current/userguide/build_init_plugin.html
Paul
to jest bardzo dobre. @Mike W eclipse, zanim to zrobisz, projekt java musi zostać przekonwertowany na projekt gradle. Jak więc mogę automatycznie ustawić foldery źródłowe?
verystrongjoe
Jedna ważna rzecz. Musisz mieć wersję Gradle z dołączoną wtyczką init. Zajęło mi dużo czasu, zanim zrozumiałem, co jest nie tak z moją oceną.
Юрій Мазуревич
6
Użyjmkdir -p src/{main,test}/{java,resources}
Ortwin Angermeier
1
gradle wrapper --gradle-version 4.1 init --type java-libraryJeśli chcesz określić wersję opakowania
deFreitas
19

Gracze starają się rozwiązać wszystkie (y) nasze problemy ;-). Niedawno (od 1.9) dodali nową funkcję (inkubację): wtyczkę „build init”.

Zobacz: dokumentacja tworzenia wtyczki init

pokojeg
źródło
13

Niestety nie możesz tego zrobić jednym poleceniem. Sama funkcja jest otwarta .

Obecnie będziesz musiał to zrobić ręcznie. Jeśli musisz to robić często, możesz utworzyć niestandardową wtyczkę gradle lub po prostu przygotować własny szkielet projektu i skopiować go w razie potrzeby.

EDYTOWAĆ

Wspomniany powyżej problem z JIRA został rozwiązany 1 maja 2013 r. I naprawiony w wersji 1.7-rc-1. Dokumentacja dotycząca wtyczki Build Init jest dostępna, chociaż wskazuje ona, że ​​ta funkcja nadal znajduje się w „inkubującym” cyklu życia.

rodion
źródło
12

Wreszcie po porównaniu wszystkich rozwiązań myślę, że rozpoczęcie od build.gradlepliku może być wygodne.

Dystrybucja Gradle zawiera samplesfolder z wieloma przykładami, a gradle init --type basickomendy znajdują się w rozdziale 47. Budowanie wtyczki Init . Ale wszystkie wymagają edycji.

Możesz również użyć szablonu poniżej, a następnie uruchomić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"
}

Wynik jest jak poniżej.

Przegląd

Można go używać bez żadnej wtyczki Gradle dla Eclipse
lub z (Enide) Gradle dla Eclipse, Jetty, alternatywą dla Androida do Integracji Gradle dla Eclipse

pole edycji

Paul Verest
źródło
1

Jeśli używasz Eclipse, dla istniejącego projektu (który ma build.gradleplik) możesz po prostu wpisać, gradle eclipseco spowoduje utworzenie wszystkich plików i folderów Eclipse dla tego projektu.

Dba o wszystkie zależności za Ciebie i dodaje je również do ścieżki zasobów projektu w Eclipse.

Pelpotronic
źródło
2
Nie tworzy to folderów źródłowych. Jeśli nie zostały utworzone wcześniej, konfiguracje Eclipse nie będą pełne. Niemniej jednak bardzo dziękuję, dodany jako krok .3
Paul Verest,
1

Mogę sobie z tym poradzić, używając groovy metody w build.gradlecelu utworzenia wszystkich folderów źródłowych dla języka Java, zasobów i testów. Następnie ustawiłem go tak, aby działał przed gradle eclipsezadaniem.

eclipseClasspath.doFirst {
    initSourceFolders()
}

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

Teraz możemy skonfigurować nowy projekt gradle Java EE do zaćmienia za pomocą tylko jednego polecenia. Umieściłem ten przykład na GitHub

Edy Segura
źródło
-2

Właśnie spróbowałem z Eclipse Neon.1 i 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

wprowadź opis obrazu tutaj

W systemie Windows 10 z wersją 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)

I nie udało się to żałośnie, jak widać w Eclipse. Ale płynął jak szybujący orzeł w Intellij ... Nie znam Intellij i jestem wielkim fanem zaćmienia, ale zwykli kolesie, to oznacza, że ​​NIKT NIE testował Neon.1 w najprostszych przypadkach użycia ... aby zaimportować projekt gradle. To nie wystarczy. Przechodzę na Intellij dla projektów Gradle:

wprowadź opis obrazu tutaj

Beezer
źródło
1
Pytanie brzmiało: Jak stworzyć projekt Java Gradle z wiersza poleceń?
Paul Verest
Jaki jest problem z byciem pomocnym w tym kontekście, Pawle? To jest w tym samym kontekście. Dlaczego więc nie pokazać, że zaćmienie ma obecnie problem z jego importowaniem.
Beezer