Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c5925c6
Added gradle to gitignore
NicoPiel Apr 22, 2025
2993cef
Add gradle
NicoPiel Apr 22, 2025
7261684
Added preliminary build.gradle files
NicoPiel Apr 22, 2025
092409f
Moved directories to comply with Gradle
NicoPiel Apr 22, 2025
0f0a46d
Moved donkey to Gradle
NicoPiel Apr 22, 2025
4184fc1
Working on /server
NicoPiel Apr 23, 2025
b4d1c6e
Building works
NicoPiel Apr 23, 2025
b97c794
Getting rid of .classpath and .project files
NicoPiel Apr 23, 2025
480ccde
Getting rid of .classpath and .project files
NicoPiel Apr 23, 2025
b38021e
Excluded .classpath and .project files from git
NicoPiel Apr 23, 2025
3ee6663
command now builds
NicoPiel Apr 23, 2025
2b87e62
Removed command/lib
NicoPiel Apr 23, 2025
b8a9c4b
Getting rid of server/lib
NicoPiel Apr 23, 2025
50925ab
Manager compiles
NicoPiel Apr 23, 2025
3230a65
Excluding webadmin/bin folder
NicoPiel Apr 23, 2025
7cdca65
webadmin compiles
NicoPiel Apr 23, 2025
04d4b82
dumdum (cli was a build artifact)
NicoPiel Apr 23, 2025
a949455
Moved files around to comply with Gradle's standards
NicoPiel Apr 24, 2025
b83fb1e
Made changes to client/build.gradle and reverted extension structure …
NicoPiel Apr 24, 2025
a128527
Client compiles
NicoPiel Apr 24, 2025
45273a9
Added missing JavaFX dependencies
NicoPiel Apr 24, 2025
1fab3cf
Removed most Ant build files
NicoPiel Apr 24, 2025
5dc4f65
Removes unused build properties
NicoPiel Apr 24, 2025
032c399
Updated Gradle to 8.13
NicoPiel Apr 24, 2025
7654e73
Updates build configuration for Gradle
NicoPiel Apr 24, 2025
2a96d7e
Simplifies donkey project dependency
NicoPiel Apr 24, 2025
e467685
Add .gitignore entry for aider
NicoPiel Apr 24, 2025
0ce601a
Deleted tree.txt
NicoPiel Apr 24, 2025
38eaa7d
move and rename java 9+ vmoptions file
tonygermano Apr 24, 2025
cc8983f
Add tiered vmoptions to local build
tonygermano Apr 24, 2025
a7fc805
Merge branch 'main' into feature/gradle
NicoPiel Apr 30, 2025
92247cc
Moved new files from main to appropriate directory
NicoPiel May 5, 2025
f63db0a
Project builds and outputs (mostly) original setup dir!
NicoPiel May 6, 2025
6ab7498
Removes Ant build system
NicoPiel May 6, 2025
5f00310
Closer to working build
NicoPiel May 6, 2025
cc7ae78
Streamlines distribution and build process
NicoPiel May 6, 2025
06b6fe8
Added lib folders back in to reduce amount of changes
NicoPiel May 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# Linux start script should use lf
/gradlew text eol=lf

# These are Windows script files and should use crlf
*.bat text eol=crlf

# Binary files should be left untouched
*.jar binary

7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ donkey/donkey-test
.sonar
**/junit-reports
**/code-coverage-reports
.gradle
.vscode
build
*.classpath
*.project

# /client/
/client/logs
Expand Down Expand Up @@ -600,6 +605,7 @@ donkey/donkey-test
# /simplesender/src/com/mirth/connect/simplesender/

# /webadmin/
/webadmin/bin
/webadmin/build
/webadmin/dist

Expand Down Expand Up @@ -635,3 +641,4 @@ donkey/donkey-test

# /webadmin/src/com/mirth/connect/webadmin/utils/

.aider*
2 changes: 1 addition & 1 deletion .sdkmanrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=8.0.442.fx-zulu
ant=1.10.14
ant=1.10.14
170 changes: 170 additions & 0 deletions build.gradle

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason you didn't go with the kotlin style build.gradle.kts?

IMHO it should be the default for any new project, the tooling support is so much better!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No reason at all. But good catch. I'll convert them :)

Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
plugins {
id 'base'
id 'distribution'
id 'com.gradleup.shadow' version '8.3.6'
}

import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

allprojects {
group = 'com.mirth.connect'
version = '4.5.3'
}

subprojects {
apply plugin: 'java'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}

dependencies {
implementation 'commons-beanutils:commons-beanutils:1.9.4'
implementation 'commons-cli:commons-cli:1.2' // Older version
implementation 'commons-codec:commons-codec:1.16.0'
implementation 'commons-collections:commons-collections:3.2.2' // Very old, potential conflict with collections4
implementation 'org.apache.commons:commons-collections4:4.4'
implementation 'org.apache.commons:commons-compress:1.24.0'
implementation 'org.apache.commons:commons-configuration2:2.8.0'
implementation 'org.apache.commons:commons-dbcp2:2.0.1' // Old
implementation 'commons-dbutils:commons-dbutils:1.7'
implementation 'org.apache.commons:commons-digester3:3.2'
implementation 'commons-el:commons-el:1.0' // Old, JSP related
implementation 'org.apache.commons:commons-email:1.3.1' // Check version
implementation 'commons-fileupload:commons-fileupload:1.5'
implementation 'commons-httpclient:commons-httpclient:3.0.1' // Very old Apache HttpClient 3.x
implementation 'commons-io:commons-io:2.13.0'
implementation 'commons-jxpath:commons-jxpath:1.3'
implementation 'org.apache.commons:commons-lang3:3.13.0'
implementation 'commons-logging:commons-logging:1.2' // Bridge, ensure single binding downstream
implementation 'org.apache.commons:commons-math3:3.0' // Old
implementation 'commons-net:commons-net:3.3' // Old
implementation 'org.apache.commons:commons-pool2:2.3' // Old
implementation 'org.apache.commons:commons-text:1.10.0'
implementation 'org.apache.commons:commons-vfs2:2.9.0'
implementation 'org.apache.httpcomponents:httpcore:4.4.13'
implementation 'org.apache.httpcomponents:httpmime:4.5.13'
implementation 'ca.juliusdavies:not-yet-commons-ssl:0.3.11'

// RSyntaxTestArea
implementation 'com.fifesoft:rsyntaxtextarea:2.6.1'
implementation 'com.fifesoft:autocomplete:2.5.4'
implementation 'com.fifesoft:languagesupport:2.5.6'

// Rhino (JavaScript engine)
implementation 'org.mozilla:rhino:1.7.13'

implementation 'com.thoughtworks.xstream:xstream:1.4.20'
implementation 'xpp3:xpp3:1.1.4c'
implementation 'com.zaxxer:HikariCP:2.5.1'
implementation 'org.javassist:javassist:3.26.0-GA'
implementation 'org.apache.logging.log4j:log4j-core:2.17.2'
implementation 'org.apache.logging.log4j:log4j-api:2.17.2'
implementation 'org.apache.logging.log4j:log4j-1.2-api:2.17.2'
implementation 'org.slf4j:slf4j-api:1.7.30'

// DB
implementation 'org.apache.derby:derby:10.10.2.0'
implementation 'org.apache.derby:derbytools:10.10.2.0'
implementation 'net.sourceforge.jtds:jtds:1.3.1'
implementation 'com.microsoft.sqlserver:mssql-jdbc:8.4.1.jre8'
implementation 'com.mysql:mysql-connector-j:8.2.0'
implementation 'com.oracle.database.jdbc:ojdbc8:12.2.0.1'
implementation 'org.postgresql:postgresql:42.6.0'

// --- Common Test Dependencies ---
testImplementation 'junit:junit:4.8.1'
testImplementation 'org.mockito:mockito-core:2.7.9'
testImplementation 'net.bytebuddy:byte-buddy:1.8.8'
testImplementation 'net.bytebuddy:byte-buddy-agent:1.8.8'
testImplementation 'org.objenesis:objenesis:2.5.1'
testImplementation 'org.glassfish.hk2.external:aopalliance-repackaged:2.4.0-b31'
testImplementation 'javax.inject:javax.inject:1'

// xpp3 is transitive via xstream
testImplementation 'com.zaxxer:HikariCP:2.5.1'
testImplementation 'org.javassist:javassist:3.26.0-GA'

// Provide Logging implementation & binding for tests
testRuntimeOnly 'org.apache.logging.log4j:log4j-core:2.17.2'
testRuntimeOnly 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.2'

// Velocity (Templating)
implementation 'org.apache.velocity:velocity-engine-core:2.3'
implementation 'org.apache.velocity.tools:velocity-tools-generic:3.1'
}

tasks.withType(Jar.class).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

tasks.withType(Tar.class).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

tasks.withType(Zip.class).configureEach {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

tasks.withType(ShadowJar.class).configureEach {
zip64 = true
}
}

distributions {
main {
evaluationDependsOnChildren()
distributionBaseName = 'OIE'

contents {
// Resources
from('server/src/main/resources')
from('command/src/main/resources')

into('client-lib') {
from(project(':client').getConfigurations().runtimeClasspath)
from(project(':command').getTasksByName('jar', false))
from(project(':server').getTasksByName('cryptoJar', false))
from(project(':server').getTasksByName('clientCoreJar', false))
from(project(':server').getTasksByName('userutilSourcesJar', false))
}

into('cli-lib') {
from(project(':command').getConfigurations().runtimeClasspath)
from(project(':command').getTasksByName('jar', false))
from(project(':server').getTasksByName('cryptoJar', false))
from(project(':server').getTasksByName('clientCoreJar', false))
}

into('manager-lib') {
from(project(':manager').getConfigurations().runtimeClasspath)
from(project(':command').getTasksByName('jar', false))
from(project(':server').getTasksByName('cryptoJar', false))
from(project(':server').getTasksByName('clientCoreJar', false))
}

into('server-lib') {
from(project(':server').getConfigurations().runtimeClasspath)
from(project(':command').getTasksByName('jar', false))
from(project(':server').getTasksByName('jar', false))
from(project(':server').getTasksByName('cryptoJar', false))
from(project(':server').getTasksByName('clientCoreJar', false))
}

into('extensions') {
from(project(':client').tasks.matching { Task task -> task.name ==~ /jar.*Client/ })
}

into('webapps') {
from (project('webadmin').getTasksByName('war', false))
}

from(project(':server').getTasksByName('shadowJar', false))
from(project(':manager').getTasksByName('shadowJar', false))
from(project(':command').getTasksByName('shadowJar', false))
}
}
}
Loading