Vaadin使用Maven编译Widgetset

时间:2011-12-05 13:25:37

标签: gwt maven vaadin

我在使用Maven为我的vaadin应用程序编译自定义widgetset时遇到问题。

在我的maven模块中,有一个jar模块包含自定义小部件和一个war模块。

编译后的jar模块包含源代码和生成的类,基本上如下所示:

com
 |-mypackage
 |  |-ui
 |  | |- VMyWidget.class
 |  | |- VMyWidget.java
 |  |- MyComponent.class
 |  |- MyComponent.java
 |  |- MyWidgetSet.gwt.xml
 |-META-INF
    |-Manifest.MF
       |-Vaadin-Widgetsets: com.mypackage.MyWidgetSet
       |-Vaadin-Package-Version: 1

在我的war项目中,pom.xml包含以下部分:

 <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>2.3.0</version>
        <configuration>
          <webappDirectory>${project.build.directory}/${project.build.finalName}/VAADIN/widgetsets</webappDirectory>
          <extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>
          <hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>
          <noServer>true</noServer>         
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>generateAsync</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-maven-plugin</artifactId>
        <version>1.0.1</version>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>update-widgetset</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

包含小部件的jar是war项目的依赖项,因此定义了小部件集。

然而,GWT编译器似乎没有找到源,尽管它们包含在jar工件中。

因此,我收到以下警告/错误消息:

  

[INFO] [ERROR] [WARN]找不到小部件类com.mypackage.ui.VMyWidget。 com.mypackage.MyComponent组件不会包含在widgetset中。

我错过了什么?为什么GWT编译器找不到它需要的源?

2 个答案:

答案 0 :(得分:4)

我想我发现了这个问题。该包必须为com.mypackage.client.ui,即它似乎必须包含client旁边的MyWidgetSet.gwt.xml子包。虽然记录在案,但我忽略了这一点。

现在似乎有用了。

答案 1 :(得分:1)

我也遇到了这个问题。我读了这个主题的成千上万的答案,但从来没有找到有帮助的东西。我注意到,如果你在eclipse中运行tomcat作为适配器并将项目部署到其中,那么有时在你​​构建项目之后,目标文件夹与eclipse不同步,你必须按F5 执行此操作后,可以加载widgetset。