2012-07-17 3 views
1

maven-base-plugin이라는 Maven 플러그인 추상화 프로그램을 작성했습니다. 이 플러그인은 모든 클래스와 리소스를 거쳐 특정 작업을 수행합니다. 추상 플러그인이기 때문에,이 플러그인의 포장은 maven-plugin이 아니라 "jar"로 설정되어 있습니다.maven plugin for inheritance 빌드가 실패했습니다.

다른 플러그인 (tools-reporter)이 위의 플러그인 API를 사용하여 내 프로젝트에 대한 보고서를 만듭니다. 보고서의 보고서와 대상은 인터페이스이므로 나중에 확장 할 수 있습니다. 다시 말하지만,이 프로젝트는 "병"이라는 포장재를 가지고 있습니다.

이제 아티팩트 및 리소스에 사용할 특정 보고서를 생성하는 리포터 플러그인에 따라 제 3의 플러그인이 있습니다. 이 플러그인의 포장은 "maven-plugin"으로 설정되어 있습니다. 지금 당장 오래 동안 부끄러워하게 만든 것은 무엇이며, 여러 가지 검사로 해결하지 못했다면이 세 번째 플러그인을 성공적으로 만들 수 없다는 것입니다. 내가 할 때

, 내가 얻을 :

[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] 

자세한 말 :

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 

어떤 도움이나 통찰력이 많이 주시면 감사하겠습니다.

그런데, 나는 다른 값으로 포장을 설정하는 다양한 조합을 시도했다. 작동하는 유일한 방법은 세 번째 플러그인 인 tools-reporter-sample을 간단한 "병"으로 발표하는 것입니다. 이는이 연습의 전체 목적을 제거하기 때문에 일종의 역효과입니다.

+1

현재 내 유지 보수 중 크리스탈 전구가 ... 추측하기 어려운 코드가 ... – khmarbaise

+0

문제는 코드가 다소 큽니다. 어떻게 포함시켜야합니까? –

+0

github 또는 동등한 것을 사용하고 있습니까? – khmarbaise

답변

0

실패한 것은 플러그인의 계층 적 디자인 때문이 아닙니다. 그러나 오히려 이상하게도 플러그인을 사용하면 classpath에 주석을 포함시켜야합니다. 수업이 있었는데 @interface Sample {. 일단 내가 그것을 제거하면, 모든 것이 해결되었습니다.

아직 이유를 알지 못했습니다.