Hi Hervé,

Do you mean project binding and from there use plexus container to lookup
anything?
This can work but then the question is what is the value of this plugin?
To detail that let me review the usage you can get today:

1. groovy -> you will likely use gplus plugin which is more centered on
groovy and way more powerful
2. js -> likely nashorn-maven-plugin for trivial script which has more
bindings and a better script enclosing but if you really do js you can end
up using frontend-maven-plugin which enables a real node scripting
3. java -> hack with maven compiler+exec-maven-plugin but has the
dependency pitfall
4. python -> probably acceptable but several jython maven plugins have more
integrations (not using jsr223)
5. ruby -> jruby-maven-plugin, way more features and configurations needed
for ruby (like gems)

Not sure other languages are often used through JSR223 but overall there is
almost no real cases justifying current plugin usage as of today because
you will quickly hit limitations already solved until your case is very
simple and you just replace ant maven plugin IMHO.

Indeed, you are fully right, from the project instance you can hack all you
want but then you end up managing complex scripts so it is generally
pointless and preferrable to be able:
1. to configure the engine
2. configure the bindings from the pom.xml (or have several virtual/or not
ones out of the box)
3. handling the execution environment (which is sometimes linked to 1 and
sometimes not as for java)

Java case also needs a bit more like using toolchain and plexus-java  for
example - until you do it more simply using javac directly but wouldn't be
consistent for maven itself.

Now I fully hear the "there is enough SPI to do it outside" and I can agree
with it but then my question would be "what is the goal of this plugin" in
current ecosystem?
Java integration is an opportunity to give to maven some scripting
capabilities keys in current way to develop for doc and integration with
external system but we have alternatives, this is why I sent this mail
before doing all the code - BTW i can push a quick PoC if you want to see
more what it can look like, I was not sure it was the way to solve that
extensibility need *from the project* itself.

Hope it makes sense.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le ven. 26 févr. 2021 à 08:40, Hervé BOUTEMY <[email protected]> a
écrit :

> I don't get every detail, but have one question on dependencies: isn't
> dependency injection to the maven-scripting-plugin sufficient [1]
>
> do you need something more advanced, managed by the maven-scripting-plugin
> itself?
>
> Regards,
>
> Hervé
>
> [1]
> https://maven.apache.org/plugins-archives/maven-scripting-plugin-LATEST/
> configure-the-script-engine.html
> <https://maven.apache.org/plugins-archives/maven-scripting-plugin-LATEST/configure-the-script-engine.html>
>
> Le jeudi 25 février 2021, 16:16:09 CET Romain Manni-Bucau a écrit :
> > Le jeu. 25 févr. 2021 à 15:28, Markus KARG <[email protected]> a
> >
> > écrit :
> > > Romain,
> > >
> > > just to understand your target: In the end what you want is that the
> Java
> > > scripting plugin will execute Java source code, just like jshell does?
> > > That
> > > sounds interesting to me.
> >
> > This is more a side effect, the target is to be able to be able to
> replace
> > src/main/java/xxxx/build/*.java + exec-maven-plugin setups which has the
> > drawback to require dependencies in the actual module (even in scope
> > provided).
> > The scripting plugin has the opportunity to normalize that through the
> > maven-java-scripting-engine which will take this through engine
> > configuration.
> > To illustrate the usage: it generates documentation, typed clients
> (http),
> > jsonschema, openapi.json, docker images with CDS and much more and in a
> > customized fashion.
> > Big gain is to not have to leak all dependencies in the build  and keep
> > build part of the build isolated (a profile can enable to code in the IDE
> > but when running mvn xxx it is gone/deactivated).
> >
> > Side notes:
> > 1. creating a build module is not an option since it is really about
> having
> > the build code in the related module and not a "put it all" module which
> is
> > very hard to maintain.
> > 2. creating a mojo for these needs is inefficient in terms of maintenance
> > and customization level (I come from there) and ultra verbose in the pom
> > compared to this scripting option
> >
> >
> > Hope it clarifies my goal
> >
> > > -Markus
> > >
> > >
> > > -----Ursprüngliche Nachricht-----
> > > Von: Romain Manni-Bucau [mailto:[email protected]]
> > > Gesendet: Donnerstag, 25. Februar 2021 09:59
> > > An: Maven Developers List
> > > Betreff: Future of maven scripting plugin, java?
> > >
> > > Hi all,
> > >
> > > Wonder if maven scripting plugin has some future plans or not.
> > > Very concretely I'm interested in being able to use java as scripting
> > > files
> > > (something along src/build/scripting in terms of structure in final
> > > project).
> > > Since we are in maven we have javac so it is not hard to implement a
> > > jsr223
> > > (with tool provider or not is a detail) but more complicated thing is
> the
> > > classpath, it needs the plugin to be able to create a classloader
> adjusted
> > > for that kind of execution (potentially compiling the whole scripting
> > > folder). In terms of impacts it means enabling to configure the script
> > > engine, ie pass args from the mojo to the getScriptEngine method
> > > (typically
> > > kind of the same as exec maven plugin, ie scope/classpath).
> > >
> > > So changes would be:
> > >
> > > 1. implement a java script engine
> > > 2. make the script engine instantiation more configurable
> > >
> > > Do you think it is worth it or exec maven plugin is still preferred?
> > >
> > > Romain Manni-Bucau
> > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > <https://rmannibucau.metawerx.net/> | Old Blog
> > > <http://rmannibucau.wordpress.com> | Github <
> > > https://github.com/rmannibucau> |
> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
> > > <
> > >
> https://www.packtpub.com/application-development/java-ee-8-high-performanc
> > > e
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [email protected]
> > > For additional commands, e-mail: [email protected]
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to