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 >
