Friday, September 13, 2013

Re: GWT maven plugin and Appengine maven plugin



On Friday, September 13, 2013 12:27:11 PM UTC+2, Сергей Устинкин wrote:
Hi, i have a problem with gwt-maven-plugin. I have a project with objectify, request-factory and gwt. And i want use maven plugin to upload project to gae, but when i call mvn appengine:update, exception arise:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.runetfind.webapp.client.SandboxJukitoTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.514 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- gwt-maven-plugin:2.5.1:compile (default) @ runetfind ---
[INFO] Compiling module com.runetfind.webapp.Runetfind
[INFO]    Validating units:
[INFO]       [ERROR] Errors in 'file:/home/ustinkin/git/runetfind/runetfind/target/generated-sources/apt/com/runetfind/webapp/shared/service/ServerRequestFactoryDeobfuscatorBuilder.java'
[INFO]          [ERROR] Line 7: No source code is available for type com.google.web.bindery.requestfactory.vm.impl.Deobfuscator.Builder; did you forget to inherit a required module?
[INFO]          [ERROR] Line 9: No source code is available for type com.google.web.bindery.requestfactory.vm.impl.OperationKey; did you forget to inherit a required module?
[INFO]          [ERROR] Line 10: No source code is available for type com.google.web.bindery.requestfactory.vm.impl.OperationData.Builder; did you forget to inherit a required module?
[INFO]    [ERROR] Aborting compile due to errors in some input files


Could someone help me to solve the problem?

First, you have to understand why that happens.

  1. RequestFactory needs a Deobfuscator.Builder implementation for each RequestFactory interface, for server-side use. That class is loaded using a naming convention: same name as the RF interface with a "DeobfuscatorBuilder" suffix. That class is generally generated by an annotation processor.
  2. In your case, the annotation processor is run by the maven-processor-plugin in the generate-sources phase, so it generates the source-code for that class. Another option is to have it run by 'javac' (i.e. the maven-compiler-plugin), in which case it'll generally only generate the *.class file (you can configure the maven-compiler-plugin to also output the source file). Then the build-heper-maven-plugin in your case adds the target/generated-sources/apt folder as a source folder; this is so that your projects is easier to import in Eclipse (don't know about other IDEs) and then run the DevMode from there (that way, you don't have to configure the annotation processor in Eclipse, M2E will call the generate-sources phase and will auto-configure the project using the build-helper-maven-plugin configuration).
  3. The GWT compiler scans the entire classpath and tries to compile every *.java file that's in the module's source path. Despite being server-side code, the generated DeobfuscatorBuilder is in the source path as it a) needs to be a sibling of the interface and b) has a *.java file generated (in your case) by the maven-processor-plugin.
  4. And you have <strict>true</strict> in your gwt-maven-plugin which tells GWT to fail the compilation if anything cannot be compiled, even if it'll never be actually used by the app (file is in the source path but never referenced transitively by the EntryPoint)
So you have several options here:

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate