Allow CFML code to require Lucee extensions on the fly


This ticket goes along with

With the idea of having a version of Lucee with no extensions installed, we need to account for the possibility of ad-hoc code being run that requires an extension. This code might be loaded in from a 3rd party module, or run ad hoc after the server has started. An example of this would be CommandBox task runners. The idea that someone can take an build script written in CFML and run it on the base CLI, but the script may require a MySQL JDBC driver installed because it accesses DB. It would be nice to have some method at the top of that code to declare or require extensions that needed to be present, and have them installed on the fly if they were not present.

Adding JVM args would not be a solution in this case since it may be a run time requirement and we're in a CLI context and not a server context. The ability to require an extension would need to be self contained inside the CFM file and handled on-the-fly so the extension was immediately available.

The user would need to be able to specify:

  • The UUID of the extension (we need to have some human readable names for these!)

  • The version of the extension (optional, defaulting to latest)

  • The update provider to get the extension from, in case it's not in the default Lucee provider




Brad Wood