Hi Alexander,

Would it solve your problem if we uncover the method [1] and develop a
builder for the chain of methods [2]?
To uncover [2] means to make the Plexus Container API accessible within the
builder.
Perhaps more has to be done but that's up to the future collaborative work
on GitHub.

[1]:
https://github.com/apache/maven/blob/master/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java#L281
[2]:
https://github.com/apache/maven/blob/master/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java#L276-L288

Cheers
Tibor17

On Thu, Aug 29, 2019 at 3:39 PM Alexander Bubenchikov <
[email protected]> wrote:

> Hi Stuart
> E.g.
> https://github.com/JetBrains/intellij-community/blob/master/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java
> customizeComponents method
>
> Originally idea use own components defined in
> META-INF/plexus/components.xml with hints "ide", then original maven
> components are replaced in plexus container. Container instance is getting
> using reflection from MavenCli,
> This functionality is very old. It was an only solution before introducing
> extensions in maven, as I understand. Also at the moment, we still support
> IDE compatibility with maven versions starting from 3.0, there are still
> some amount of users who use really old maven versions in their enterprise
> projects.
>
> Thank you for your answer, I'll consider refactoring maven server to core
> extension mechanism for maven 3.3.1 and above
>
>
>
>
> On Thu, Aug 29, 2019 at 3:57 PM Stuart McCulloch <[email protected]>
> wrote:
>
>> How are you replacing them currently?
>>
>> The typical way is to use the extensions mechanism:
>> https://maven.apache.org/docs/3.3.1/release-notes.html#Core_Extensions
>>
>> Components contributed via an extension have a higher priority over the
>> original component in core (assuming that they have the same JSR330 name
>> or
>> Plexus hint)
>>
>> On Thu, 29 Aug 2019 at 11:46, Alexander Bubenchikov <
>> [email protected]> wrote:
>>
>> > Hi Enrico, my name is Alex, I've joined to Jetbrains this year and
>> > responsible for maven integration and Intellij idea.
>> >
>> > he issue happen because we replace some components in maven
>> > (ModelInterpolator in this case) to our own implementation which have
>> > injected PathTranslator and UrlNormalizer
>> > I've workarounded the issue in our code, but I didn't dig well into
>> this.
>> > Is there any new way to replace maven components?
>> >
>> > On Wed, Aug 28, 2019 at 11:57 PM Enrico Olivelli <[email protected]>
>> > wrote:
>> >
>> > > It may be due to any change regarding jsr 330 like
>> > > https://issues.apache.org/jira/plugins/servlet/mobile#issue/MNG-6686
>> > >
>> > >
>> > > I think it is an issue for Idea and not for us.
>> > > It would be good to have some developer from Jetbrains on this list
>> > >
>> > >
>> > > Enrico
>> > >
>> > > Il mer 28 ago 2019, 22:23 Tibor Digana <[email protected]> ha
>> > > scritto:
>> > >
>> > > > I do not have NPE in the log.
>> > > > Guice is certainly not CDI. Moving Guice to CDI must be painful.
>> > > > One reason why PathTranslator could not be found is that there are
>> > > several
>> > > > bean instances of the same interface.
>> > > > Second problem might go with the Guice/CDI.
>> > > > See this inheritance:
>> > > >
>> > > > @Named
>> > > > @Singleton
>> > > > public class DefaultPathTranslator
>> > > >     implements PathTranslator
>> > > > {
>> > > >
>> > > > public interface PathTranslator
>> > > > {
>> > > >
>> > > >
>> > > >
>> > > > On Wed, Aug 28, 2019 at 10:04 PM Filipe Sousa <[email protected]>
>> > wrote:
>> > > >
>> > > >> Hi,
>> > > >>
>> > > >> Not sure if it’s the same bug I commented in
>> > > >>
>> > >
>> >
>> https://issues.apache.org/jira/browse/MNG-6638?focusedCommentId=16852351&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16852351
>> > > >>
>> > > >> I reported to Jetbrains
>> > > https://youtrack.jetbrains.com/issue/IDEA-215315
>> > > >> <https://youtrack.jetbrains.com/issue/IDEA-215315> and is
>> supposed to
>> > > be
>> > > >> fixed in 2019.3
>> > > >>
>> > > >> > On 28 Aug 2019, at 20:43, Tibor Digana <[email protected]>
>> > > wrote:
>> > > >> >
>> > > >> > I used Maven 3.6.2 in the IntelliJ IDEA 2019.2.1 and I found
>> these
>> > > >> errors
>> > > >> > in the log file:
>> > > >> > ~/.IntelliJIdea2019.2/system/log/idea.log
>> > > >> >
>> > > >> > 2019-08-28 21:31:32,072 [255937677]  ERROR -
>> > > >> #org.jetbrains.idea.maven
>> > > >> > - com.google.inject.CreationException: Unable to create injector,
>> > see
>> > > >> the
>> > > >> > following errors:
>> > > >> >
>> > > >> > 1) No implementation for
>> org.apache.maven.model.path.PathTranslator
>> > > was
>> > > >> > bound.
>> > > >> >  while locating org.apache.maven.model.path.PathTranslator
>> > > >> >    for field at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.pathTranslator(Unknown
>> > > >> > Source)
>> > > >> >  at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.codehaus.plexus.DefaultPlexusContainer$1.configure(DefaultPlexusContainer.java:350)
>> > > >> >
>> > > >> > 2) No implementation for
>> org.apache.maven.model.path.UrlNormalizer
>> > was
>> > > >> > bound.
>> > > >> >  while locating org.apache.maven.model.path.UrlNormalizer
>> > > >> >    for field at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.urlNormalizer(Unknown
>> > > >> > Source)
>> > > >> >  at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.codehaus.plexus.DefaultPlexusContainer$1.configure(DefaultPlexusContainer.java:350)
>> > > >> >
>> > > >> > 2 errors
>> > > >> > java.lang.RuntimeException: com.google.inject.CreationException:
>> > > Unable
>> > > >> to
>> > > >> > create injector, see the following errors:
>> > > >> >
>> > > >> > 1) No implementation for
>> org.apache.maven.model.path.PathTranslator
>> > > was
>> > > >> > bound.
>> > > >> >  while locating org.apache.maven.model.path.PathTranslator
>> > > >> >    for field at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.pathTranslator(Unknown
>> > > >> > Source)
>> > > >> >  at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.codehaus.plexus.DefaultPlexusContainer$1.configure(DefaultPlexusContainer.java:350)
>> > > >> >
>> > > >> > 2) No implementation for
>> org.apache.maven.model.path.UrlNormalizer
>> > was
>> > > >> > bound.
>> > > >> >  while locating org.apache.maven.model.path.UrlNormalizer
>> > > >> >    for field at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.urlNormalizer(Unknown
>> > > >> > Source)
>> > > >> >  at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.codehaus.plexus.DefaultPlexusContainer$1.configure(DefaultPlexusContainer.java:350)
>> > > >> >
>> > > >> > 2 errors
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:543)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:159)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
>> > > >> > at com.google.inject.Guice.createInjector(Guice.java:87)
>> > > >> > at com.google.inject.Guice.createInjector(Guice.java:69)
>> > > >> > at com.google.inject.Guice.createInjector(Guice.java:59)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.codehaus.plexus.DefaultPlexusContainer.addComponent(DefaultPlexusContainer.java:344)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.codehaus.plexus.DefaultPlexusContainer.addComponent(DefaultPlexusContainer.java:332)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.Maven3XServerEmbedder.customizeComponents(Maven3XServerEmbedder.java:573)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.Maven3XServerEmbedder.customize(Maven3XServerEmbedder.java:542)
>> > > >> > at
>> > > >>
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> > > >> > Method)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> > > >> > at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359)
>> > > >> > at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200)
>> > > >> > at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197)
>> > > >> > at java.base/java.security.AccessController.doPrivileged(Native
>> > > Method)
>> > > >> > at
>> > > java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677)
>> > > >> > at java.base/java.security.AccessController.doPrivileged(Native
>> > > Method)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>> > > >> > at java.base/java.lang.Thread.run(Thread.java:834)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:283)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:260)
>> > > >> > at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:209)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.rmi/java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:161)
>> > > >> > at com.sun.proxy.$Proxy216.customize(Unknown Source)
>> > > >> > at
>> > > >>
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> > > >> > Method)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> > > >> > at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>> > > >> > at
>> > > >>
>> > com.intellij.execution.rmi.RemoteUtil.invokeRemote(RemoteUtil.java:175)
>> > > >> > at
>> > > com.intellij.execution.rmi.RemoteUtil.access$200(RemoteUtil.java:38)
>> > > >> > at
>> > > >>
>> > com.intellij.execution.rmi.RemoteUtil$1$1$1.compute(RemoteUtil.java:156)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> com.intellij.openapi.util.ClassLoaderUtil.computeWithClassLoader(ClassLoaderUtil.java:45)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> com.intellij.execution.rmi.RemoteUtil.executeWithClassLoader(RemoteUtil.java:227)
>> > > >> > at
>> > > com.intellij.execution.rmi.RemoteUtil$1$1.invoke(RemoteUtil.java:153)
>> > > >> > at com.sun.proxy.$Proxy216.customize(Unknown Source)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.MavenEmbedderWrapper.doCustomize(MavenEmbedderWrapper.java:92)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.MavenEmbedderWrapper.onWrappeeCreated(MavenEmbedderWrapper.java:45)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.RemoteObjectWrapper.getOrCreateWrappee(RemoteObjectWrapper.java:42)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.MavenEmbedderWrapper.doCustomize(MavenEmbedderWrapper.java:92)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.MavenEmbedderWrapper.lambda$customizeForResolve$1(MavenEmbedderWrapper.java:65)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.RemoteObjectWrapper.perform(RemoteObjectWrapper.java:76)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.server.MavenEmbedderWrapper.customizeForResolve(MavenEmbedderWrapper.java:64)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.project.MavenProjectsTree.resolve(MavenProjectsTree.java:1261)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.project.MavenProjectsProcessorResolvingTask.perform(MavenProjectsProcessorResolvingTask.java:45)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.project.MavenProjectsProcessor.doProcessPendingTasks(MavenProjectsProcessor.java:140)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.project.MavenProjectsProcessor.access$000(MavenProjectsProcessor.java:33)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.project.MavenProjectsProcessor$2.run(MavenProjectsProcessor.java:114)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> org.jetbrains.idea.maven.utils.MavenUtil.lambda$runInBackground$5(MavenUtil.java:468)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:294)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
>> > > >> > at
>> > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>> > > >> > at
>> > > >> >
>> > > >>
>> > >
>> >
>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>> > > >> > at java.base/java.lang.Thread.run(Thread.java:834)
>> > > >>
>> > > >>
>> > >
>> >
>> >
>> > --
>> > Alexander Bubenchikov
>> > Software developer
>> > JetBrains
>> > http://www.jetbrains.com
>> > The Drive to Develop
>> >
>>
>
>
> --
> Alexander Bubenchikov
> Software developer
> JetBrains
> http://www.jetbrains.com
> The Drive to Develop
>

Reply via email to