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 <mccu...@gmail.com> 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 < > alexander.bubenchi...@jetbrains.com> 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 <eolive...@gmail.com> > > 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 <tibordig...@apache.org> 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 <nat...@gmail.com> > > 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 <tibordig...@apache.org> > > > 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