2012-07-17 2 views
1

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:

+1

Mon ampoule en cristal est actuellement en maintenance ... sans code difficile à deviner ... – khmarbaise

+0

Le problème est, le code est plutôt grand. Comment dois-je l'inclure? –

+0

En utilisant un github ou quelque chose d'égal? – khmarbaise

Répondre

0

Il s'avère que la défaillance n'était pas due à la conception hiérarchique des plugins. Mais plutôt étrangement, avoir le plugin inclure une annotation dans son classpath l'a fait. J'ai eu un cours, @interface Sample {. Une fois que je l'ai enlevé, tout a été résolu.

Je n'ai pas encore compris pourquoi.

Questions connexes