วิธีสร้าง Java gradle project


120

จะสร้างโครงการ Java Gradle จากบรรทัดคำสั่งได้อย่างไร

ควรสร้างเค้าโครงโฟลเดอร์ maven มาตรฐานดังภาพด้านล่าง

Java Gradle สร้างด้วยปลั๊กอิน Eclipse

UPDATE:

0.1 จากhttp://www.gradle.org/docs/current/userguide/tutorial_java_projects.html ฉันต้องการสร้างไฟล์ที่build.gradleมี 2 ​​บรรทัด

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

0.2 เพิ่มในbuild.gradleงานด้านล่างกว่าดำเนินการgradle create-dirs

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

0.3 จากนั้นเรียกใช้gradle eclipse(หรือสตริงที่สอดคล้องกับปลั๊กอิน IDE อื่นที่กำหนดค่าไว้)

มีวิธีทำในคำสั่งเดียวหรือไม่?


1
ใครรู้ว่าเทียบเท่ากับ IntelliJ java project skeleton?
Beezer

ฉันคิดว่าคำตอบอยู่เหนือ .... _ หรือสตริงที่สอดคล้องกับปลั๊กอิน IDE อื่นที่กำหนดค่า _: =)
Beezer

คำตอบ:


283

ในการสร้างโปรเจ็กต์ Java: สร้างไดเร็กทอรีโปรเจ็กต์ใหม่ข้ามไปที่มันและดำเนินการ

gradle init --type java-library

โฟลเดอร์ซอร์สและไฟล์บิวด์ Gradle (รวมถึง wrapper) จะถูกสร้าง


8
ดังที่ได้กล่าวไว้ในคำตอบอื่น ๆ คุณสามารถดูเอกสารประกอบเกี่ยวกับปลั๊กอิน build init ได้ที่นี่: gradle.org/docs/current/userguide/build_init_plugin.html
Paul

มันดีมาก. @Mike ใน eclipse ก่อนทำสิ่งนี้โปรเจ็กต์ java จะต้องถูกแปลงเป็นโปรเจ็กต์ gradle จากนั้นฉันจะตั้งค่าโฟลเดอร์ต้นทางโดยอัตโนมัติได้อย่างไร
verystrongjoe

สิ่งที่น่าสนใจอย่างหนึ่ง คุณต้องมีเวอร์ชัน Gradle พร้อมปลั๊กอิน init ฉันใช้เวลาพอสมควรในการคิดออกว่าเกิดอะไรขึ้นกับการไล่ระดับสีของฉัน
ЮрійМазуревич

6
ใช้mkdir -p src/{main,test}/{java,resources}
Ortwin Angermeier

1
gradle wrapper --gradle-version 4.1 init --type java-libraryหากคุณต้องการระบุเวอร์ชันของ wrapper
deFreitas


13

น่าเสียดายที่คุณไม่สามารถทำได้ในคำสั่งเดียว มีปัญหาที่เปิดอยู่สำหรับคุณลักษณะนี้

ตอนนี้คุณจะต้องทำด้วยมือ หากคุณจำเป็นต้องทำบ่อยๆคุณสามารถสร้างปลั๊กอิน gradle ที่กำหนดเองหรือเตรียมโครงกระดูกโครงการของคุณเองและคัดลอกเมื่อจำเป็น

แก้ไข

ปัญหา JIRA ที่กล่าวถึงข้างต้นได้รับการแก้ไขแล้วเมื่อวันที่ 1 พฤษภาคม 2013 และได้รับการแก้ไขแล้วใน 1.7-rc-1 เอกสารประกอบของBuild Init Pluginมีให้แม้ว่าจะระบุว่าคุณลักษณะนี้ยังอยู่ในวงจรชีวิต "การบ่ม"


12

สุดท้ายหลังจากเปรียบเทียบโซลูชันทั้งหมดฉันคิดว่าการเริ่มต้นจากbuild.gradleไฟล์สามารถทำได้สะดวก

การกระจาย Gradle มีsamplesโฟลเดอร์ที่มีตัวอย่างมากมายและมีgradle init --type basiccom และดูบทที่ 47 สร้างปลั๊กอินเริ่มต้น แต่พวกเขาทั้งหมดต้องการการแก้ไขบางอย่าง

คุณสามารถใช้เทมเพลตด้านล่างได้เช่นกันจากนั้นเรียกใช้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"
}

ผลลัพธ์เป็นเหมือนด้านล่าง

ภาพรวม

ที่สามารถใช้ได้โดยไม่ต้องใช้ปลั๊กอิน Gradle สำหรับ Eclipse
หรือกับ(Enide) Gradle for Eclipse, Jetty, AndroidทางเลือกแทนGradle Integration for Eclipse

editbox


1

หากคุณใช้ Eclipse สำหรับโปรเจ็กต์ที่มีอยู่ (ซึ่งมีbuild.gradleไฟล์) คุณสามารถพิมพ์gradle eclipseซึ่งจะสร้างไฟล์และโฟลเดอร์ Eclipse ทั้งหมดสำหรับโปรเจ็กต์นี้

ดูแลการอ้างอิงทั้งหมดสำหรับคุณและเพิ่มไปยังเส้นทางรีซอร์สโปรเจ็กต์ใน Eclipse ด้วย


2
สิ่งนี้ไม่ได้สร้างโฟลเดอร์ต้นทาง หากไม่ได้สร้างมาก่อนการกำหนดค่า Eclipse จะไม่เต็ม อย่างไรก็ตามขอบคุณมากเพิ่มเป็นขั้นตอนที่ 3
Paul Verest

1

ฉันสามารถจัดการได้โดยใช้วิธีbuild.gradleการที่ยุ่งยากเพื่อสร้างซอร์สโฟลเดอร์ทั้งหมดสำหรับ java ทรัพยากรและการทดสอบ จากนั้นฉันตั้งค่าให้ทำงานก่อนgradle eclipseงาน

eclipseClasspath.doFirst {
    initSourceFolders()
}

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

ตอนนี้เราสามารถตั้งค่าโปรเจ็กต์ gradle Java EE ใหม่เพื่อคราสด้วยคำสั่งเพียงคำสั่งเดียว ฉันวางตัวอย่างนี้ไว้ที่GitHub


-2

ฉันเพิ่งลองกับ Eclipse Neon.1 และ 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

ใส่คำอธิบายภาพที่นี่

บน windows 10 พร้อม Java Version:

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)

และมันล้มเหลวอย่างน่าอนาถอย่างที่คุณเห็นใน Eclipse แต่แล่นเหมือนนกอินทรีทะยานใน Intellij ... ฉันไม่รู้จัก Intellij และเป็นแฟนตัวยงของคราส แต่มีเป็ดทั่วไปซึ่งหมายความว่าไม่มีใครทดสอบ Neon.1 สำหรับกรณีการใช้งานที่ง่ายที่สุด ... เพื่อนำเข้าโครงการ gradle นั่นยังไม่ดีพอ ฉันกำลังเปลี่ยนไปใช้ Intellij สำหรับโครงการระดับประถมศึกษา:

ใส่คำอธิบายภาพที่นี่


1
คำถามคือ: จะสร้างโครงการ Java Gradle จากบรรทัดคำสั่งได้อย่างไร?
Paul Verest

ปัญหาในการเป็นประโยชน์ในบริบทนี้เปาโลคืออะไร? มันอยู่ในบริบทเดียวกัน ดังนั้นทำไมไม่แสดงว่าปัจจุบันคราสมีปัญหาในการนำเข้า
Beezer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.