diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index b09ba0f..8c1d7f3 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -28,7 +28,7 @@ jobs: with: java-version: '17' distribution: 'corretto' - - name: Build with Gradle + - name: Build with Gradle shadowJar uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 with: - arguments: build + arguments: shadowJar diff --git a/build.gradle b/build.gradle index 56d51e5..d3091ce 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { + id 'com.github.johnrengelman.shadow' version '7.1.2' id 'java' - id("java-library") // or id("application") + id("java-library") } repositories { @@ -18,6 +19,8 @@ dependencies { testImplementation('org.junit.jupiter:junit-jupiter:5.6.0') testImplementation 'junit:junit:4.13.1' + shadow 'junit:junit:3.8.2' + // https://mvnrepository.com/artifact/mysql/mysql-connector-java implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.31' @@ -33,3 +36,18 @@ test { events "passed", "skipped", "failed" } } + +shadowJar { + archiveBaseName.set('BillGates') + archiveClassifier.set('') + archiveVersion.set('0.1.0') +} + +jar { + manifest { + attributes( + 'Class-Path': configurations.runtimeClasspath.files.collect { it.getName() }.join(' '), + 'Main-Class': "billgates.Main" + ) + } +} \ No newline at end of file diff --git a/src/main/java/billgates/database/MySQLDatabaseGateway.java b/src/main/java/billgates/database/MySQLDatabaseGateway.java index b2ab37d..f8ba90f 100644 --- a/src/main/java/billgates/database/MySQLDatabaseGateway.java +++ b/src/main/java/billgates/database/MySQLDatabaseGateway.java @@ -7,7 +7,6 @@ import billgates.interface_adapters.DatabaseGateway; import billgates.view.BillGatesUtilities; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.*; @@ -44,7 +43,7 @@ public MySQLDatabaseGateway() { } public void initializeConnection() { - try (InputStream input = new FileInputStream("src/main/resources/config.properties")) { + try (InputStream input = this.getClass().getClassLoader().getResourceAsStream("config.properties")) { Properties prop = new Properties();