Skip to content

Conversation

@NicoPiel
Copy link
Contributor

@NicoPiel NicoPiel commented Dec 1, 2025

Adds an initial Gradle build system that delegates to the existing Ant build to enable gradual migration and tooling improvements.

Highlights:

  • Introduces a root Gradle configuration that imports and delegates to the project's Ant build targets, avoiding immediate rewrite of existing build logic.
  • Adds the Gradle wrapper and supporting files (wrapper properties, jar, and scripts) so the repository can be built consistently without requiring a local Gradle install.
  • Adds per-subproject Gradle stub files to make the repository a multi-project Gradle layout and allow incremental conversion of subprojects.
  • Adds Gradle metadata/configuration (gradle.properties, dependency platform TOML) and updates SDKMAN settings to include a Gradle version for reproducible developer environments.
  • Adds .gitattributes and .gitignore tweaks and normalizes an IDE classpath file to remove trailing encoding differences.
  • Configures Ant-to-Gradle interoperability (ant taskdefs and properties) and maps Ant targets to avoid conflicts with Gradle built-in tasks.

Why:

  • Allows us to start using Gradle tooling and the wrapper for builds, CI, and IDEs while preserving the working Ant build.
  • Supports incremental migration of subprojects to Gradle without disrupting existing build behavior.

Notes / Next steps:

  • Subprojects remain backed by the Ant build; plan incremental conversion of individual modules to native Gradle builds.
  • Verify CI pipelines and developer SDK setups pick up the wrapper and SDKMAN gradle setting.

@NicoPiel NicoPiel force-pushed the feature/gradle-build-ant branch from 16b7bae to fb1c8ab Compare December 1, 2025 14:54
NicoPiel and others added 4 commits December 1, 2025 16:00
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
Adds a top-level Gradle build that imports the existing Ant build to enable a gradual migration to Gradle while still using Ant for current tasks. Configures Ant to run JUnit (including ant-junit4) and exposes select Gradle properties to Ant; renames conflicting Ant targets to avoid collisions and makes the Gradle build task delegate to the Ant build target. Also adds placeholder Gradle files for subprojects and bumps the configured Gradle SDK version.

Co-authored-by: Mitch Gaffigan <mitch.gaffigan@comcast.net>
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
@NicoPiel NicoPiel force-pushed the feature/gradle-build-ant branch from 6a6e3c7 to ddf0ada Compare December 1, 2025 15:00
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
Copy link
Contributor

@mgaffigan mgaffigan left a comment

Choose a reason for hiding this comment

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

Other issues to address

  • CI build scripts need updated (.github/workflow/...)
  • Readme/Contributor documents need updated
  • ant mirth-build build target needs to be updated to block build outside of gradle with migration guidance in error message

Comment on lines +46 to +53
// Pass Gradle properties to Ant
project.findProperty("disableSigning")?.let {
ant.properties["disableSigning"] = it.toString()
}

project.findProperty("disableTests")?.let {
ant.properties["disableTests"] = it.toString()
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Are there other properties we need to be passing?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good question. I'm not sure. These are the only two I use and the only two available in mirth-build.xml, afaia.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants