...
Allowing to extend the main project menu may lead to its explosion with many added actions for each technology. A standard grouping action should be created in the OpenAPI and documented, so a technology may eventually add its action into a subgroup. This will not be part of the initial implementation, but could be added later. Note that by default, the Lookups.forPath() collects the whole .../Actions subtree (traversing into subfolders).
Display action in LSP clients
Run-style actions should be handled by Debugger Adapter Protocol, and its Launch Request: this ensures the client is aware of the running process and can control (somwhat) the process' execution. From the client's point of view, the execution terminates only if the application fails, not until the process exits, which is consistent with how mn:run or gradle -t works. The Continuous Run feature will be specified by argument continuousExecution=true. The Launch handler should then modify the invoked project action from COMMAND_RUN to COMMAND_RUN_CONTINUOUS.
Integration with VSCode
The java8+ launch type should be enhanced with either
- continuousExecution : boolean | null, or
- generic Map to support possible future launch extensions
The user may edit / change the Run configuration or create an additional one that executes the application in the "Continuous run" mode.
Maven implementation
RunJar support
...