Start Gradle project แล้วนำไปใช้ใน Netbeans

Start Gradle project แล้วนำไปใช้ใน Netbeans

เพื่อให้ใช้งานได้โดยไม่ต้องผูกกับ Gradle version ใน Netbeans เวลาที่เราสร้าง project ใหม่

  1. สร้าง folder ที่จะเก็บ project
  2. เปิด command prompt – เข้าไปใน folder
  3. สั่ง gradle init

ถ้าไม่มีปัญหาอะไร มันก็จะสร้างเสร็จแบบนี้

ดูเหมือนมันจะสร้าง ‘app’ เอาไว้ให้เราเลย

โครงสร้างดูจะเป็น sub-project โดย settings.gradle เป็น setup หลักของ main project นี้เลย

สั่ง gradle wrapper เพื่อสร้างไฟล์ wrapper โดยต่อไปนี้มันจะไม่อิงกับ gradle ที่อาจจะลงใหม่ หรือ upgrade

แต่เหมือนมันจะ error หรือไม่ก็ไม่แน่ใจ ? แต่จริงๆแล้วมันมี gradle wrapper มาให้แต่แรกเหมือนกัน ?

อย่างน้อยก็ถือว่าเสร็จแล้ว – จากนั้นลองใช้ Netbeans เปิด

เปิดครั้งแรก ต้องสั่ง build ก่อน – กด Resolve ก็พอ

app ตัวอย่างที่มากับ gradle init

ถ้าต้องการทำ FAT-JAR หรือ UBER-JAR หรือ SHADOW-JAR

Fat-jar ก็คือการ compile project ของเรา แล้วทำ JAR package โดยการยัด library ทุกตัวที่เราเรียกใช้งานเข้ามาไว้ในไฟล์เดียว – ข้อดีคือเวลา deploy เราส่งไปไฟล์เดียวใหญ่ๆ – การควบคุม versioning ก็จะดูสะดวก – แต่ข้อเสียคือบางทีไฟล์มันใหญ่มาก ถ้าเรามีการ update บ่อยๆ เวลาทำงานจะช้าลงมาก เพราะบางทีเวลา compile ก็นานพอสมควร – นอกจากนั้น – การ deploy ก็จะนาน ยิ่งถ้าผ่าน network ช้าๆ จะยิ่งเสียเวลามาก

เวลาที่เรา apply plugins – shadow – ใน menu task จะมี menu ย่อยเพิ่มขึ้นมา คือ menu ‘shadow’ – เวลาใช้งาน เราก็จะเรียก ‘shadowJar’ จากนั้นมันจะ package ทุกอย่างอยู่ในชื่อ [app ของเรา]-all.jar

เราสามารถ customize ชื่อได้ ไม่จำเป็นต้องใช้ -all.jar ต่อท้ายเสมอไป (เดี๋ยวค่อยมาเพิ่มตรงนี้)

สร้าง sub-project ใน root project

ใน root project – settings.gradle – เพิ่มชื่อ project ที่ต้องการ

สร้าง folder ที่ต้องการ ด้วย structure ตามข้างล่าง + สร้าง build.gradle – จากนั้น reload project

ตัวอย่าง build.gradle ที่ใช้งานได้

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.14.3/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
    id 'com.github.johnrengelman.shadow' version '8.1.1'
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    // Use JUnit Jupiter for testing.
    testImplementation libs.junit.jupiter
    //testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'

    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

    
    //testImplementation 'junit:junit:4.13.2'
    
    // This dependency is used by the application.
    implementation libs.guava

    // Apache POI สำหรับจัดการไฟล์ Excel (.xls และ .xlsx)
    // 'poi' คือ API หลัก
    implementation 'org.apache.poi:poi:5.2.5'
    // 'poi-ooxml' สำหรับไฟล์ .xlsx (เวอร์ชันใหม่)
    implementation 'org.apache.poi:poi-ooxml:5.2.5'

    compileOnly 'org.projectlombok:lombok:1.18.38'
    annotationProcessor 'org.projectlombok:lombok:1.18.38'
    testCompileOnly 'org.projectlombok:lombok:1.18.38'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.38'

}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(8)
    }
}

application {
    // Define the main class for the application.
    mainClass = 'org.example.App'
}

tasks.named('test') {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *