เพื่อให้ใช้งานได้โดยไม่ต้องผูกกับ Gradle version ใน Netbeans เวลาที่เราสร้าง project ใหม่
- สร้าง folder ที่จะเก็บ project
- เปิด command prompt – เข้าไปใน folder
- สั่ง 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()
}

