J'ai écrit un abstracteur de plugin Maven, appelé maven-base-plugin. Ce plugin va sur toutes les classes et ressources et effectue certaines tâches. Comme il s'agit d'un plugin abstrait, ce plugin n'a pas son emballage défini sur maven-plugin
, mais plutôt sur "jar".Échec de construction pour le plugin maven avec héritage
J'ai un autre plugin, tools-reporter
, qui en utilisant l'API du plugin ci-dessus, crée des rapports pour mon projet. Encore une fois, les rapports et les destinations des rapports sont des interfaces, de sorte qu'ils pourraient être étendus à l'avenir. Encore une fois, ce projet a un emballage de "pot".
Maintenant, j'ai un troisième plugin, en fonction du plugin reporter générant certains rapports à utiliser sur les artefacts et les ressources. Ce plugin a son emballage défini sur "maven-plugin". Ce qui m'a gardé un certain temps maintenant, et diverses inspections ne l'ont pas résolu, c'est que je ne peux pas construire ce troisième plugin avec succès.
Quand je fais, je reçois:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:2.3:descriptor (default-descriptor) on project tools-reporter-sample: Execution default-descriptor of goal org.apache.maven.plugins:maven-plugin-plugin:2.3:descriptor failed: 0 -> [Help 1]
Les détails disent:
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:2.3:descriptor (default-descriptor) on project tools-reporter-sample: Execution default-descriptor of goal org.apache.maven.plugins:maven-plugin-plugin:2.3:descriptor failed: 0
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-descriptor of goal org.apache.maven.plugins:maven-plugin-plugin:2.3:descriptor failed: 0
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 25 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at org.apache.maven.tools.plugin.extractor.java.JavaMojoDescriptorExtractor.getJavaClass(JavaMojoDescriptorExtractor.java:534)
at org.apache.maven.tools.plugin.extractor.java.JavaMojoDescriptorExtractor.execute(JavaMojoDescriptorExtractor.java:553)
at org.apache.maven.tools.plugin.scanner.DefaultMojoScanner.populatePluginDescriptor(DefaultMojoScanner.java:84)
at org.apache.maven.plugin.plugin.AbstractGeneratorMojo.execute(AbstractGeneratorMojo.java:135)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 26 more
Toute aide ou aperçu serait très apprécié. Par ailleurs, j'ai essayé diverses combinaisons d'emballage de réglage à différentes valeurs. La seule chose qui fonctionne est l'annonce du troisième plugin, tools-reporter-sample
comme un simple "pot", ce qui est contre-productif, car il élimine tout le but de cet exercice.
Tel est le sens du code incriminé:
Voici une description de ce que chacun de ceci est pour:
- AbstractPluginExecutor.java: Le plug-in de base d'origine qui est empaqueté comme un pot et est utilisé par le plugin de rapports de base
- mave-base-plugin-pom.xml: Le fichier
pom.xml
pour le plugin maven de base - Executor.java: La classe abstraite qui s'occupe de toutes les bonnes choses.
- tools-reporter-pom.xml: Le fichier
pom.xml
pour le plugin de rapport de base. - Reporter.java: L'exemple de plugin supposé être exécuté.
- tools-reporter-sample-pom.xml: le fichier
pom.xml
pour l'exemple de plug-in de rapport.
Mon ampoule en cristal est actuellement en maintenance ... sans code difficile à deviner ... – khmarbaise
Le problème est, le code est plutôt grand. Comment dois-je l'inclure? –
En utilisant un github ou quelque chose d'égal? – khmarbaise