Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 31 additions & 31 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
name: JavaFX Build (Gradle)

on:
push:
pull_request:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle

- name: Make Gradle executable
run: chmod +x gradlew

- name: Build using Gradle
run: ./gradlew clean build --exclude-task spotlessCheck

- name: Upload JAR artifact
uses: actions/upload-artifact@v4
with:
name: satyam-consignment
name: JavaFX Build (Gradle)
on:
push:
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle
- name: Make Gradle executable
run: chmod +x gradlew
- name: Build using Gradle
run: ./gradlew clean build
- name: Upload JAR artifact
uses: actions/upload-artifact@v4
with:
name: satyam-consignment
path: build/libs/*
209 changes: 107 additions & 102 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,102 +1,107 @@
plugins {
id 'application'
id 'java'
id "org.openjfx.javafxplugin" version "0.1.0"
id 'com.diffplug.spotless' version '7.0.2'
id "com.github.johnrengelman.shadow" version "7.1.2"
}

repositories {
mavenCentral()
}

dependencies {
implementation group: 'org.controlsfx', name: 'controlsfx', version: '11.2.2'
implementation group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.1.0'
implementation group: 'org.xerial', name: 'sqlite-jdbc', version: '3.34.0'
implementation group: 'org.olap4j', name: 'olap4j', version: '1.2.0'
implementation group: 'com.lowagie', name: 'itext', version: '2.1.7'

implementation("org.openjfx:javafx-controls:17")
implementation("org.openjfx:javafx-base:17")
implementation("org.openjfx:javafx-graphics:17")
implementation("org.openjfx:javafx-fxml:17")

compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'

testCompileOnly 'org.projectlombok:lombok:1.18.20'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'

testImplementation 'org.testfx:testfx-junit5:4.0.18'
testImplementation 'org.testfx:openjfx-monocle:17.0.10'
testImplementation 'org.hamcrest:hamcrest:2.2'

testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.1"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.1"

testImplementation "org.testfx:testfx-core:4.0.17"
}

javafx {
version = "17"
modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.graphics', 'javafx.base' ]
}

test {
useJUnitPlatform()

if (System.getenv("CI") == "true") {
jvmArgs = [
"-Dtestfx.robot=glass",
"-Dtestfx.headless=true",
"-Dprism.order=sw",
"-Dprism.text=t2k",
"-Djava.awt.headless=true"
]
}
}

spotless {
java {
lineEndings 'WINDOWS'
target 'src/**/*.java'
eclipse().configFile('spotless.eclipseformat.xml')
removeUnusedImports()
}
}

mainClassName = 'satyamconsignment.Launcher'

application {
mainClassName = mainClassName
}

run {
jvmArgs = ['--add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.base/com.sun.javafx.binding=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.graphics/com.sun.javafx.stage=ALL-UNNAMED']
}

shadowJar {
archiveClassifier.set("")
}

tasks.register('copyScripts', Copy) {
from('scripts') {
include 'start.sh'
include 'start.bat'
}
into "${layout.buildDirectory.get()}/libs"
doLast {
println "Copied scripts to build directory"
}
}

tasks.named('shadowJar') {
dependsOn (
tasks.named('copyScripts')
)
}
import com.diffplug.spotless.LineEnding

plugins {
id 'application'
id 'java'
id "org.openjfx.javafxplugin" version "0.1.0"
id 'com.diffplug.spotless' version '7.0.2'
id "com.github.johnrengelman.shadow" version "7.1.2"
}

repositories {
mavenCentral()
}

dependencies {
implementation group: 'org.controlsfx', name: 'controlsfx', version: '11.2.2'
implementation group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.1.0'
implementation group: 'org.xerial', name: 'sqlite-jdbc', version: '3.34.0'
implementation group: 'org.olap4j', name: 'olap4j', version: '1.2.0'
implementation group: 'com.lowagie', name: 'itext', version: '2.1.7'

implementation("org.openjfx:javafx-controls:17")
implementation("org.openjfx:javafx-base:17")
implementation("org.openjfx:javafx-graphics:17")
implementation("org.openjfx:javafx-fxml:17")

compileOnly 'org.projectlombok:lombok:1.18.20'
annotationProcessor 'org.projectlombok:lombok:1.18.20'

testCompileOnly 'org.projectlombok:lombok:1.18.20'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'

testImplementation 'org.testfx:testfx-junit5:4.0.18'
testImplementation 'org.testfx:openjfx-monocle:17.0.10'
testImplementation 'org.hamcrest:hamcrest:2.2'

testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.1"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.10.1"

testImplementation "org.testfx:testfx-core:4.0.17"
}

javafx {
version = "17"
modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.graphics', 'javafx.base' ]
}

test {
useJUnitPlatform()

if (System.getenv("CI") == "true") {
jvmArgs = [
"-Dtestfx.robot=glass",
"-Dtestfx.headless=true",
"-Dprism.order=sw",
"-Dprism.text=t2k",
"-Djava.awt.headless=true"
]
}
}

spotless {
java {
lineEndings LineEnding.UNIX
target 'src/**/*.java'

palantirJavaFormat()
removeUnusedImports()
endWithNewline()
trimTrailingWhitespace()
}
}

mainClassName = 'satyamconsignment.Launcher'

application {
mainClassName = mainClassName
}

run {
jvmArgs = ['--add-exports=javafx.base/com.sun.javafx.event=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.controls/com.sun.javafx.scene.control.behavior=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.base/com.sun.javafx.binding=ALL-UNNAMED']
jvmArgs += ['--add-exports=javafx.graphics/com.sun.javafx.stage=ALL-UNNAMED']
}

shadowJar {
archiveClassifier.set("")
}

tasks.register('copyScripts', Copy) {
from('scripts') {
include 'start.sh'
include 'start.bat'
}
into "${layout.buildDirectory.get()}/libs"
doLast {
println "Copied scripts to build directory"
}
}

tasks.named('shadowJar') {
dependsOn (
tasks.named('copyScripts')
)
}
89 changes: 44 additions & 45 deletions src/main/java/satyamconsignment/Launcher.java
Original file line number Diff line number Diff line change
@@ -1,45 +1,44 @@
package satyamconsignment;

import java.io.InputStream;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import satyamconsignment.common.Utils;

public class Launcher extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage stage) {
try {
String mainFxmlPath = "/satyamconsignment/ui/Main/Main.fxml";
URL resource = getClass().getResource(mainFxmlPath);
if (resource == null) {
throw new RuntimeException("Resource not found");
}
Parent root = FXMLLoader.load(resource);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setMaximized(true);
stage.show();
InputStream resourceAsStream = getClass()
.getResourceAsStream("/satyamconsignment/icons/Icon.png");
if (resourceAsStream != null) {
stage.getIcons().add(new Image(resourceAsStream));
}
stage.setTitle("Satyam Consignment");
} catch (Exception ex) {
Utils.showAlert(ex.toString());
Logger.getLogger(Launcher.class.getName()).log(Level.SEVERE, ex.toString(), ex);
}
}
}
package satyamconsignment;

import java.io.InputStream;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import satyamconsignment.common.Utils;

public class Launcher extends Application {

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage stage) {
try {
String mainFxmlPath = "/satyamconsignment/ui/Main/Main.fxml";
URL resource = getClass().getResource(mainFxmlPath);
if (resource == null) {
throw new RuntimeException("Resource not found");
}
Parent root = FXMLLoader.load(resource);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setMaximized(true);
stage.show();
InputStream resourceAsStream = getClass().getResourceAsStream("/satyamconsignment/icons/Icon.png");
if (resourceAsStream != null) {
stage.getIcons().add(new Image(resourceAsStream));
}
stage.setTitle("Satyam Consignment");
} catch (Exception ex) {
Utils.showAlert(ex.toString());
Logger.getLogger(Launcher.class.getName()).log(Level.SEVERE, ex.toString(), ex);
}
}
}
Loading