-
Notifications
You must be signed in to change notification settings - Fork 42
Adds Gradle build that delegates to existing Ant build #214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Adds Gradle build that delegates to existing Ant build #214
Conversation
6a6e3c7 to
ddf0ada
Compare
mgaffigan
left a comment
There was a problem hiding this 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
| // Pass Gradle properties to Ant | ||
| project.findProperty("disableSigning")?.let { | ||
| ant.properties["disableSigning"] = it.toString() | ||
| } | ||
|
|
||
| project.findProperty("disableTests")?.let { | ||
| ant.properties["disableTests"] = it.toString() | ||
| } |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know JUnit supports some properties for running specific tests instead of the whole suite, but I doubt anyone actually uses that. I have in the past, but I would need to look them up to even identify what they are called, because it's not something I do frequently. I wouldn't hold up this PR for that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This commit added disableSigning as well as cert and keystore_property_file
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>
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
4018468 to
6284f3b
Compare
Changes the root project name to a lowercase value to avoid case-related build/tooling issues (improves compatibility with Gradle/Ant and CI environments). Signed-off-by: Nico Piel <nico.piel@hotmail.de>
| // Pass Gradle properties to Ant | ||
| project.findProperty("disableSigning")?.let { | ||
| ant.properties["disableSigning"] = it.toString() | ||
| } | ||
|
|
||
| project.findProperty("disableTests")?.let { | ||
| ant.properties["disableTests"] = it.toString() | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know JUnit supports some properties for running specific tests instead of the whole suite, but I doubt anyone actually uses that. I have in the past, but I would need to look them up to even identify what they are called, because it's not something I do frequently. I wouldn't hold up this PR for that.
| // Pass Gradle properties to Ant | ||
| project.findProperty("disableSigning")?.let { | ||
| ant.properties["disableSigning"] = it.toString() | ||
| } | ||
|
|
||
| project.findProperty("disableTests")?.let { | ||
| ant.properties["disableTests"] = it.toString() | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This commit added disableSigning as well as cert and keystore_property_file
Signed-off-by: Nico Piel <nico.piel@hotmail.de>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR introduces Gradle build support to enable gradual migration from the existing Ant-based build system. It adds the Gradle wrapper (version 9.2.1), root and subproject build configurations that delegate to Ant, version catalog management, and updates to supporting files like .gitignore and .gitattributes.
Key Changes:
- Adds Gradle wrapper scripts and configuration for reproducible builds without requiring local Gradle installation
- Implements root build configuration that imports the Ant build and provides Ant-to-Gradle interoperability (JUnit taskdefs, property passing)
- Creates stub subproject build files to establish multi-project structure while preserving Ant build delegation
Reviewed changes
Copilot reviewed 12 out of 16 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
settings.gradle.kts |
Configures multi-project structure with 5 subprojects and foojay-resolver plugin |
build.gradle.kts |
Root build that imports Ant, configures JUnit tasks, passes properties, and renames conflicting targets |
gradlew / gradlew.bat |
Gradle wrapper shell and batch scripts for cross-platform execution |
gradle/wrapper/gradle-wrapper.properties |
Wrapper configuration specifying Gradle distribution URL and settings |
gradle/wrapper/gradle-wrapper.jar |
Binary wrapper JAR for bootstrapping Gradle |
gradle.properties |
Gradle build optimization settings (configuration cache, parallel, caching) |
gradle/libs.versions.toml |
Version catalog with Guava dependency declaration |
client/build.gradle.kts |
Stub build file with commented Ant import for client subproject |
command/build.gradle.kts |
Stub build file with commented Ant import for command subproject |
donkey/build.gradle.kts |
Stub build file with commented Ant import for donkey subproject |
generator/build.gradle.kts |
Stub build file with commented Ant import for generator subproject |
server/build.gradle.kts |
Stub build file with commented Ant import for server subproject |
.gitattributes |
Adds line ending normalization for gradlew and binary handling for JARs |
.gitignore |
Adds exclusion for Gradle build output directories |
.sdkmanrc |
Formatting adjustment (no functional change) |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # Add key=value pairs of SDKs to use below | ||
| java=17.0.17.fx-zulu | ||
| ant=1.10.14 | ||
| ant=1.10.14 |
Copilot
AI
Dec 30, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR description states that the SDKMAN settings should include a Gradle version for reproducible developer environments, but no Gradle version has been added to this file. Consider adding a line like "gradle=8.11.1" (or the appropriate version) to ensure developers have a consistent Gradle version installed via SDKMAN.
| * This file was generated by the Gradle 'init' task. | ||
| * | ||
| * The settings file is used to specify which projects to include in your build. | ||
| * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.14/userguide/multi_project_builds.html in the Gradle documentation. |
Copilot
AI
Dec 30, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment references documentation for Gradle 8.14, but the wrapper is configured to use Gradle 9.2.1 (which doesn't exist). These version references should be consistent and both should reference a valid, existing Gradle version.
| * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/8.14/userguide/multi_project_builds.html in the Gradle documentation. | |
| * For more detailed information on multi-project builds, please refer to https://docs.gradle.org/current/userguide/multi_project_builds.html in the Gradle documentation. |
Adds an initial Gradle build system that delegates to the existing Ant build to enable gradual migration and tooling improvements.
Highlights:
Why:
Notes / Next steps: