Repository navigation
Exec Maven Plugin 3.7.0 raises the minimum Maven version to 3.9.0, adds three long-requested exec:java options, and fixes a batch of old bugs in how commands and Java programs are started. Java 8 is still enough to run it. Builds on Maven 3.6.3 to 3.8.x must stay on 3.6.4.
✨ Highlights
- Maven 3.9.0 or later is required (#548). Older Maven versions fail at startup with a prerequisite error.
classpathDependencyExcludesremoves chosen dependencies from the class path ofexec:javaandexec:exec(#562, requested in #68 by @pramodanarase).mainClassfrom the manifest. WhenexecutableDependencyis set andmainClassis not, theMain-Classattribute of that dependency's manifest is used (#563, #89 by @sewe).keepClassLoaderOpenleaves theexec:javaclass loader open after the program returns, so shutdown hooks and background threads can still load classes (#561, #513 by @tzaeschke).exec:javathreading. The main class runs in a non-daemon bootstrap thread that the plugin waits for, so IDE builds such as m2e no longer interrupt it (#572, #526 by @sbj42). A program's ownUncaughtExceptionHandlernow receives its uncaught exceptions (#569, #141 by @dedeibel).exec:execfixes.asynctogether withoutputFilekeeps the output file open until the process ends (#565, #63 by @tarioch). A relativeexecutableresolves againstworkingDirectoryagain (#567, #92 by @deepakab03). Unquoted line breaks and tabs incommandlineArgscount as spaces instead of creating empty arguments (#571, #466 by @cebaa). A failed command logs its message at error level and keeps the stack trace for-X(#568).- Module path. Resource directories stay off the module path (#560, #534 by @inaldt), and the
%modulepathtoken is handled (#532 by @pzygielo). - Documentation moved from APT to Markdown, and the module path argument file is now documented (#557, #566).
🚨 Removed
- Require Maven 3.9.0 (#548) @slachiewicz
🚀 New features and improvements
- Add keepClassLoaderOpen to exec:java (#561) @slachiewicz
- Add classpathDependencyExcludes (#562) @slachiewicz
- Read mainClass from the executableDependency manifest (#563) @slachiewicz
🐛 Bug Fixes
- Log only the message of a failed command at error level (#568) @slachiewicz
- Pass uncaught exceptions to the handlers of the program (#569) @slachiewicz
- Resolve a relative executable against the working directory (#567) @slachiewicz
- Treat unquoted line breaks and tabs in the arguments as spaces (#571) @slachiewicz
- Run the main class in a non-daemon bootstrap thread (#572) @slachiewicz
- Keep the output file open for asynchronous executions (#565) @slachiewicz
- Keep resource directories off the module path (#560) @slachiewicz
- Handle
%modulepathtoken (#532) @pzygielo
📝 Documentation updates
- Document the module path argument file (#566) @slachiewicz
- Convert the site documents from APT to Markdown (#557) @slachiewicz
- Add AGENTS.md (#552) @slachiewicz
👻 Maintenance
- Ignore JVM option notices in the mexec-86 output check (#564) @slachiewicz
- Declare the Maven artifacts the code uses (#553) @slachiewicz
- Remove redundant mojo.java.target property (#554) @slachiewicz
- Keep Dependabot on Maven 3.9.x (#550) @slachiewicz
- Keep plexus-xml on 3.x in Dependabot (#541) @slachiewicz
🔧 Build
- Resolve the heaviest plugins of setup-parent in the main build (#559) @slachiewicz
- Reuse the cached prefix file in the integration tests (#558) @slachiewicz
- Use the runners' cached Temurin JDKs in CI (#551) @slachiewicz
- Serve the plexus-utils fixture dependency from a mock repository (#549) @slachiewicz
- Assign merged pull requests to the release milestone (#547) @slachiewicz
- Check dependencies monthly and group the updates (#546) @slachiewicz
- Run fewer JDKs on macOS and Windows and the ITs in parallel (#545) @slachiewicz
- Keep Dependabot off Mockito 5 (#543) @slachiewicz
📦 Dependency updates
- Bump the maven group with 4 updates (#555) @dependabot[bot]
- Bump asm.version from 9.10.1 to 9.11 (#544) @dependabot[bot]
- Bump org.codehaus.plexus:plexus-xml from 3.0.1 to 3.1.0 (#542) @dependabot[bot]
- Bump org.codehaus.plexus:plexus-utils from 3.0.24 to 3.6.1 in /src/it/projects/modulepath-from-cli (#539) @dependabot[bot]
- Keep plexus-xml on 3.x in Dependabot (#541) @slachiewicz
Thanks to @pzygielo and @slachiewicz.