os-xtoo
os-xtoo copied to clipboard
[maven] Generate *.java from *.mdo files via ModelloCLI
Figure out ModelloCLI to be able to process Maven's *.mdo files into *.java files. Created codehaus-plexus/modello/issues/15 on ModelloCLI usage, and inability to load Java plugin. Or what ever is necessary to process the mdo files. Not able to find any documentation on CLI usage. Started discussion on ModelloCLI on Maven development mailing list.
For time being switching to pre-generated sources from Maven central. Which is not ideal as it does not work for live building. Nor provides any means to generated said source files for proper from source build.
Affected packages
- dev-java/maven-compat
- dev-java/maven-core
- dev-java/maven-embedder
- dev-java/maven-builder
- dev-java/maven-model
- dev-java/maven-plugin-api
- dev-java/maven-repository-metadata
- dev-java/maven-settings
- dev-java/plexus-sec-dispatcher
did you try to use the Ant bootstrap build that was in Maven until 3.3.9?
No I have not tried to use that, and not sure I can use that for building maven. I would need to package that from source and build that. I really try to avoid any binary packages. Though I will look into that route.
I need to experiment, but the issue with ModelloCli may come from Plexus. I am using plexus-containers, and I may need to switch to eclipse plexus-sisu. Maven failed to build against plexus-containers, and had a lot of output https://github.com/Obsidian-StudiosInc/os-xtoo/issues/54#issuecomment-414865849. I have no build issues with Modello or Plexus. Still maybe swapping plexus-containers for sisu-plexus out well help.
That being said, I see a similar issue on startup of Maven I packaged from source in https://github.com/Obsidian-StudiosInc/os-xtoo/issues/54#issuecomment-415233330
[ERROR] Error executing Maven.
[ERROR] java.util.NoSuchElementException
role: org.apache.maven.eventspy.internal.EventSpyDispatcher
roleHint:
[ERROR] Caused by: null
That class is part of maven-core and is packaged and present. But it seems it cannot be found. Much like Modello cannot find Java plugin. The role and roleHint from that error output, makes me think it is Plexus related. Those are Plexus component descriptor concepts.
the Ant bootstrap worked perfectly for Maven 3.3.9. Even if you don't want to use Ant, I suppose it's a good starting point to create a shell-based build script: https://github.com/apache/maven/blob/maven-3.3.9/build.xml.
I don't see why Plexus container would not work, unless some Maven components are marked with javax.inject tags: it's the only feature Plexus container does not have
notice I see you seem to be using Java 11: using Java 8 first may be wiser, you're maybe mixing multiple causes.
My environment no longer supports Java 8, and come January it will only be available via openjdk. Java 11 release next month. I can switch to Java 10. I guess that could be the issue. I was on 9 when I first packaged Modello. I haven't seen to many issues with most things under 11 so this would be unique. Most issues I run into are compile issues, class moves, changes, etc.
Shell based build is basically what Gentoo does, ebuilds are just bash scripts. The problem is ModelloCli fails to find the Java plugin to process mdo files into java. I can use ant, so long as it does now download anything. I would not use it for build, just for to process mdo files into java.
For Maven, plexus-container either changed or did not have the changes that were in sisu-plexus. Basically the same package just different names mostly with some class and method changes. Not sure if the function is different per the difference of each.
I swapped out plexus-container-default for sisu-plexus. That totally changed the output. I think I need to replace all instances of plexus-container-default with sisu-plexus. I am also seeing the same exception I am seeing in Maven now.
# modello src/main/mdo/extension.mdo java src/main/java 4.0.0 false true
[WARNING] Error contextualizing: org.codehaus.modello.plugin.java.JavaModelloGenerator@4b213651
org.codehaus.plexus.context.ContextException: Unable to lookup required component
at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:285)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.contextualize(PlexusLifecycleManager.java:282)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:203)
at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
at java.base/java.util.AbstractMap.get(AbstractMap.java:187)
at org.codehaus.modello.plugin.AbstractPluginManager.getPlugin(AbstractPluginManager.java:59)
at org.codehaus.modello.core.DefaultGeneratorPluginManager.getGeneratorPlugin(DefaultGeneratorPluginManager.java:38)
at org.codehaus.modello.core.DefaultModelloCore.generate(DefaultModelloCore.java:374)
at org.codehaus.modello.Modello.generate(Modello.java:65)
at org.codehaus.modello.ModelloCli.main(ModelloCli.java:49)
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
role: org.sonatype.plexus.build.incremental.BuildContext
roleHint:
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:267)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:243)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:237)
at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:281)
... 34 more
Caused by: java.util.NoSuchElementException
at java.base/java.util.Collections$EmptyIterator.next(Collections.java:4208)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
... 37 more
[main] WARN Sisu - Error injecting: org.codehaus.modello.plugin.java.JavaModelloGenerator
com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) org.codehaus.plexus.context.ContextException: Unable to lookup required component
while locating org.codehaus.modello.plugin.java.JavaModelloGenerator
1 error
at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:226)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1053)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
at java.base/java.util.AbstractMap.get(AbstractMap.java:187)
at org.codehaus.modello.plugin.AbstractPluginManager.getPlugin(AbstractPluginManager.java:59)
at org.codehaus.modello.core.DefaultGeneratorPluginManager.getGeneratorPlugin(DefaultGeneratorPluginManager.java:38)
at org.codehaus.modello.core.DefaultModelloCore.generate(DefaultModelloCore.java:374)
at org.codehaus.modello.Modello.generate(Modello.java:65)
at org.codehaus.modello.ModelloCli.main(ModelloCli.java:49)
Caused by: org.codehaus.plexus.context.ContextException: Unable to lookup required component
at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:285)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.contextualize(PlexusLifecycleManager.java:282)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:203)
at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
... 20 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
role: org.sonatype.plexus.build.incremental.BuildContext
roleHint:
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:267)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:243)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:237)
at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:281)
... 34 more
Caused by: java.util.NoSuchElementException
at java.base/java.util.Collections$EmptyIterator.next(Collections.java:4208)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
... 37 more
Exception in thread "main" com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) org.codehaus.plexus.context.ContextException: Unable to lookup required component
while locating org.codehaus.modello.plugin.java.JavaModelloGenerator
at ClassRealm[plexus.core, parent: null] (via modules: org.eclipse.sisu.wire.MergedModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
while locating org.codehaus.modello.plugin.ModelloGenerator annotated with @com.google.inject.name.Named(value="java")
1 error
at com.google.inject.internal.InternalProvisionException.toProvisionException(InternalProvisionException.java:226)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1053)
at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
at java.base/java.util.AbstractMap.get(AbstractMap.java:187)
at org.codehaus.modello.plugin.AbstractPluginManager.getPlugin(AbstractPluginManager.java:59)
at org.codehaus.modello.core.DefaultGeneratorPluginManager.getGeneratorPlugin(DefaultGeneratorPluginManager.java:38)
at org.codehaus.modello.core.DefaultModelloCore.generate(DefaultModelloCore.java:374)
at org.codehaus.modello.Modello.generate(Modello.java:65)
at org.codehaus.modello.ModelloCli.main(ModelloCli.java:49)
Caused by: org.codehaus.plexus.context.ContextException: Unable to lookup required component
at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:285)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.contextualize(PlexusLifecycleManager.java:282)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.activate(PlexusLifecycleManager.java:203)
at org.eclipse.sisu.bean.BeanScheduler.schedule(BeanScheduler.java:151)
at org.eclipse.sisu.plexus.PlexusLifecycleManager.manage(PlexusLifecycleManager.java:147)
at org.eclipse.sisu.plexus.PlexusBeanBinder.afterInjection(PlexusBeanBinder.java:72)
at com.google.inject.internal.MembersInjectorImpl.notifyListeners(MembersInjectorImpl.java:131)
at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:125)
at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:98)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:93)
at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086)
at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:57)
at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:66)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:127)
at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:47)
at com.google.inject.internal.InjectorImpl$1.get(InjectorImpl.java:1050)
... 9 more
Caused by: org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
role: org.sonatype.plexus.build.incremental.BuildContext
roleHint:
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:267)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:243)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:237)
at org.codehaus.modello.plugin.AbstractModelloGenerator.contextualize(AbstractModelloGenerator.java:281)
... 34 more
Caused by: java.util.NoSuchElementException
at java.base/java.util.Collections$EmptyIterator.next(Collections.java:4208)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
... 37 more