At least for Maven 3.8.6 this is not true.
Plexus Container API is still used in
https://github.com/apache/maven/blob/84538c9988a25aec085021c365c560670ad80f63/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java#L625
A complete stack trace for injecting File parameters in Mojos looks like this:
Thread [main] (Suspended (breakpoint at line 35 in FileConverter))
FileConverter.fromString(String) line: 35
FileConverter(AbstractBasicConverter).fromConfiguration(ConverterLookup,
PlexusConfiguration, Class<?>, Class<?>, ClassLoader, ExpressionEvaluator,
ConfigurationListener) line: 43
FileConverter.fromConfiguration(ConverterLookup, PlexusConfiguration,
Class<?>, Class<?>, ClassLoader, ExpressionEvaluator, ConfigurationListener)
line: 45
CompositeBeanHelper.convertProperty(Class<?>, Class<?>, Type,
PlexusConfiguration) line: 273
CompositeBeanHelper.setProperty(Object, String, Class<?>,
PlexusConfiguration) line: 210
ObjectWithFieldsConverter.processConfiguration(ConverterLookup, Object,
ClassLoader, PlexusConfiguration, ExpressionEvaluator, ConfigurationListener)
line: 101
BasicComponentConfigurator.configureComponent(Object,
PlexusConfiguration, ExpressionEvaluator, ClassRealm, ConfigurationListener)
line: 34
DefaultMavenPluginManager.populatePluginFields(Object, MojoDescriptor,
ClassRealm, PlexusConfiguration, ExpressionEvaluator) line: 635
DefaultMavenPluginManager.getConfiguredMojo(Class<T>, MavenSession,
MojoExecution) line: 597
DefaultBuildPluginManager.executeMojo(MavenSession, MojoExecution)
line: 124
MojoExecutor.doExecute2(MavenSession, MojoExecution) line: 370
MojoExecutor.doExecute(MavenSession, MojoExecution, ProjectIndex,
DependencyContext) line: 351
MojoExecutor.execute(MavenSession, MojoExecution, ProjectIndex,
DependencyContext) line: 215
MojoExecutor.execute(MavenSession, MojoExecution, ProjectIndex,
DependencyContext, PhaseRecorder) line: 171
MojoExecutor.execute(MavenSession, List<MojoExecution>, ProjectIndex)
line: 163
LifecycleModuleBuilder.buildProject(MavenSession, MavenSession,
ReactorContext, MavenProject, TaskSegment) line: 117
LifecycleModuleBuilder.buildProject(MavenSession, ReactorContext,
MavenProject, TaskSegment) line: 81
SingleThreadedBuilder.build(MavenSession, ReactorContext,
ProjectBuildList, List<TaskSegment>, ReactorBuildStatus) line: 56
LifecycleStarter.execute(MavenSession) line: 128
DefaultMaven.doExecute(MavenExecutionRequest, MavenSession,
MavenExecutionResult, DefaultRepositorySystemSession) line: 294
DefaultMaven.doExecute(MavenExecutionRequest) line: 192
DefaultMaven.execute(MavenExecutionRequest) line: 105
MavenCli.execute(CliRequest) line: 960
MavenCli.doMain(CliRequest) line: 293
MavenCli.main(String[], ClassWorld) line: 196
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 566
Launcher.launchEnhanced(String[]) line: 282
Launcher.launch(String[]) line: 225
Launcher.mainWithExitCode(String[]) line: 406
Launcher.main(String[]) line: 347
Even in Maven 4
(https://github.com/apache/maven/blob/a53a1aa232bc383baf055d884a7c66319d10d404/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java#L644)
the Plexus API is still used.
So I think that sisu.plexus is really the project that needs the
enhancement/fix.
Is there any plan to get rid of Plexus Containers API for Maven 4?
Thanks,
Konrad
On 2022/07/29 17:17:30 Tamás Cservenák wrote:
> Don't mix in plexus (is dead). You need Guice spi TypeConverter.
>
> T
>
> On Fri, Jul 29, 2022, 16:22 Romain Manni-Bucau <[email protected]>
> wrote:
>
> > Hi Konrad,
> >
> > Guess what you are looking for is
> >
> > https://github.com/eclipse/sisu.plexus/blob/27a29dc633e6b03753a3c8d29a033648630c8831/org.eclipse.sisu.plexus/src/org/eclipse/sisu/plexus/CompositeBeanHelper.java#L250
> > which uses
> >
> > https://github.com/eclipse/sisu.plexus/blob/27a29dc633e6b03753a3c8d29a033648630c8831/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/converters/lookup/DefaultConverterLookup.java#L46
> > so supporting Path is mainly about adding a PathConverter inspired from
> > FileConverter (
> >
> > https://github.com/eclipse/sisu.plexus/blob/27a29dc633e6b03753a3c8d29a033648630c8831/org.eclipse.sisu.plexus/src/org/codehaus/plexus/component/configurator/converters/basic/FileConverter.java#L23
> > ).
> >
> > We could have a constructor or factory support like in JAX-RS or most CLI
> > libraries (fromString, Parse, of etc) but not sure the actual usage so
> > maybe just supporting the JVM types is sufficient.
> >
> > Hope it helps.
> >
> > 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. 29 juil. 2022 à 16:06, Konrad Windszus <[email protected]> a écrit :
> >
> > > Hi,
> > > According to
> > >
> > https://maven.apache.org/guides/plugin/guide-java-plugin-development.html#files-and-directories
> > > only java.io.File type parameters are supported for dealing with file
> > > paths.
> > > I was assuming that every complex type is supported which has a
> > > constructor taking a single String value which is used for
> > > coercion/construction.
> > > That is true for
> > >
> > https://docs.oracle.com/javase/7/docs/api/java/io/File.html#File(java.lang.String)
> > > but not for
> > > https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html. Is
> > > there already a ticket for supporting NIO Path parameters?
> > >
> > > Which tool is used for doing the injection of parameters under the hood?
> > > Is that also Eclipse Sisu?
> > > It would be really nice to extend
> > >
> > https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Mapping_Complex_Objects
> > > and
> > >
> > https://maven.apache.org/guides/mini/guide-configuring-plugins.html#mapping-simple-objects
> > > a bit, as it does not really state how the object is actually
> > instantiated.
> > > Is it using the default constructor and field reflection only? If so, how
> > > does it do type coercion as everything given in the pom.xml or on the CLI
> > > is a String?
> > >
> > > Thanks in advance for giving some insights on this,
> > > Konrad
> > > ---------------------------------------------------------------------
> > > 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]