2012-03-01 148 views
0

我試圖將我的GWT應用程序轉換爲使用maven構建。我的第一個問題是,編譯器似乎不喜歡我的PlaceHistoryMapper中的「@WithTokenizers」 - 至少這是我認爲失敗的原因,如果我將它們評論出來,應用程序將編譯。我是否需要在我的pom中添加一些額外的配置才能使其工作?它在eclipse中編譯得很好,或者如果我在eclipse已經編譯了GWT源代碼之後嘗試構建maven的話。GWT Maven使用位置註釋生成

這裏是例外,我得到:

[ERROR] -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin 
:2.3.2:compile (default-compile) on project product_ui_administration: Compilation failure 
\workspaces\java\product_ui_administration\src\main\java\com\company\product\ui\administration\AdminPlaceHistoryMapper.java:[13,0] illega 
l start of expression 

     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) 
     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:319) 
     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) 
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure 
\workspaces\java\product_ui_administration\src\main\java\com\company\product\ui\administration\AdminPlaceHistoryMapper.java:[13,0] illega 
l start of expression 

     at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:656) 
     at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     ... 19 more 
[ERROR] 

這裏是我的AdminPlaceHistoryMapper接口

// this annotation not working in mvn for some reason 
@WithTokenizers({ 
    UserDetailsPlace.Tokenizer.class, 
    UserPermissionsPlace.Tokenizer.class, 
    CompanyDetailsPlace.Tokenizer.class, 
}) 

public interface AdminPlaceHistoryMapper extends PlaceHistoryMapper { 
} 
+0

請將您'AdminPlaceHistoryMapper.java'文件。 – 2012-03-01 20:13:06

+0

added AdminPlaceHistoryMapper.java – Vinnie 2012-03-01 20:54:25

+0

您是否正在編譯1.5版本的JDK? (請參閱http://twit88.com/blog/2008/03/09/maven-compile-your-application-to-be-14-15-or-16-compatible/) – 2012-03-01 21:01:58

回答

1

事實證明,這是一個簡單的語法問題Eclipse編譯器忽略,但行家GWT編譯器標記。

From the "gwt-maven-plugin Users" Google Group

這似乎很明顯對我來說,它甚至給你的行號...

總之,在你 標記生成器列表的末尾,你不能合法擁有一個逗號。這是一個語法錯誤。你的Eclipse編譯器 容忍它,但大多數其他編譯器不會。

-Jesse

+0

作爲旁註:如果您有數組聲明,則以逗號結尾是合法的。我認爲這是出於同質性... – helios 2012-03-06 13:36:16