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]

Reply via email to