[Vaadin 7] Konfiguracja mavena - pom.xml - tak aby można było korzystać z własnych theme i widgetset

O ile samo korzystanie z Vaadina daje spore możliwości, to jednak dodanie dodatkowego komponentu jak EasyUpload add-ons, może naprzykrzyć trochę życie. Po kilkudniowym boju, mogę jednak powiedzieć że udało mi się skonfigurować dostatecznie żeby korzystać z dobrodziejstw dodatków.



Największym problemem było samo skompilowanie widgetset`a przy pomocy vaadinowego dodatku do eclipse.

Poniżej zamieszczam plik pom z testowego projektu:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>

       <groupId>vaadin-test</groupId>
       <artifactId>vaadin-test</artifactId>
       <packaging>war</packaging>
       <version>0.0.1-SNAPSHOT</version>
       <name>vaadin-test</name>

       <properties>
             <vaadin.version>7.5.0</vaadin.version>
             <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
             <jetty.plugin.version>9.2.3.v20140905</jetty.plugin.version>
             <project.source.version>1.7</project.source.version>
             <project.target.version>1.7</project.target.version>
             <project.encoding>UTF-8</project.encoding>
       </properties>

       <repositories>
             <repository>
                    <id>vaadin-addons</id>
                    <url>http://maven.vaadin.com/vaadin-addons</url>
             </repository>
             <repository>
                    <id>vaadin-snapshots</id>
                    <url>https://oss.sonatype.org/content/repositories/vaadin-snapshots/</url>
                    <releases>
                           <enabled>false</enabled>
                    </releases>
                    <snapshots>
                           <enabled>true</enabled>
                    </snapshots>
             </repository>
       </repositories>

       <dependencyManagement>
             <dependencies>
                    <dependency>
                           <groupId>com.vaadin</groupId>
                           <artifactId>vaadin-bom</artifactId>
                           <version>${vaadin.version}</version>
                           <type>pom</type>
                           <scope>import</scope>
                    </dependency>
             </dependencies>
       </dependencyManagement>

       <dependencies>
             <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                    <version>3.0.1</version>
                    <scope>provided</scope>
             </dependency>
             <dependency>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin-server</artifactId>
             </dependency>
             <dependency>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin-push</artifactId>
             </dependency>
             <dependency>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin-client</artifactId>
                    <scope>provided</scope>
             </dependency>
             <!--
               Needed when using the widgetset optimizer (custom ConnectorBundleLoaderFactory).
              
               For widgetset compilation, vaadin-client-compiler is automatically added on the
               compilation classpath by vaadin-maven-plugin so normally there is no need for an
               explicit dependency.
             -->
            
             <dependency>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin-client-compiler</artifactId>
                    <scope>provided</scope>
             </dependency>
            
             <dependency>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin-themes</artifactId>
             </dependency>
       </dependencies>

       <build>
             <plugins>
                    <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-compiler-plugin</artifactId>
                           <version>3.0</version>
                           <configuration>
                                  <encoding>${project.encoding}</encoding>
                                  <source>${project.source.version}</source>
                                  <target>${project.target.version}</target>
                           </configuration>
                    </plugin>
                    <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-resources-plugin</artifactId>
                           <version>2.6</version>
                           <configuration>
                                  <encoding>${project.encoding}</encoding>
                           </configuration>
                    </plugin>
                    <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-war-plugin</artifactId>
                           <version>2.3</version>
                           <configuration>
                                  <failOnMissingWebXml>false</failOnMissingWebXml>
                                  <!-- Exclude some unnecessary files generated by the GWT compiler. -->
                                  <packagingExcludes>WEB-INF/classes/VAADIN/gwt-unitCache/**,
                                        WEB-INF/classes/VAADIN/widgetsets/WEB-INF/**</packagingExcludes>
                           </configuration>
                    </plugin>
                    <plugin>
                           <groupId>com.vaadin</groupId>
                           <artifactId>vaadin-maven-plugin</artifactId>
                           <version>${vaadin.plugin.version}</version>
                           <configuration>
                                  <extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>
                                  <webappDirectory>${basedir}/target/classes/VAADIN/widgetsets</webappDirectory>
                                  <draftCompile>false</draftCompile>
                                  <compileReport>false</compileReport>
                                  <style>OBF</style>
                                  <strict>true</strict>
                           </configuration>
                           <executions>
                                  <execution>
                                        <goals>
                                               <goal>update-widgetset</goal>
                                               <goal>compile</goal>
                                               <!-- disabled by default to use on-the-fly theme compilation -->
                                               <!-- <goal>compile-theme</goal> -->
                                        </goals>
                                  </execution>
                           </executions>
                    </plugin>
                    <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-source-plugin</artifactId>
                           <version>2.4</version>
                    </plugin>
                    <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-clean-plugin</artifactId>
                           <version>2.6.1</version>
                           <!-- Clean up also any pre-compiled themes -->
                           <configuration>
                                  <filesets>
                                        <fileset>
                                               <directory>src/main/webapp/VAADIN/themes</directory>
                                               <includes>
                                                      <include>**/styles.css</include>
                                                      <include>**/styles.scss.cache</include>
                                               </includes>
                                        </fileset>
                                  </filesets>
                           </configuration>
                    </plugin>

                    <!-- The Jetty plugin allows us to easily test the development build by
                           running jetty:run on the command line. -->
                    <plugin>
                           <groupId>org.eclipse.jetty</groupId>
                           <artifactId>jetty-maven-plugin</artifactId>
                           <version>${jetty.plugin.version}</version>
                           <configuration>
                               <scanIntervalSeconds>2</scanIntervalSeconds>
                           </configuration>
                    </plugin>
             </plugins>

             <pluginManagement>
                    <plugins>
                           <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                           <!-- TODO Remove when http://dev.vaadin.com/ticket/14924 is resolved -->
                           <plugin>
                                  <groupId>org.eclipse.m2e</groupId>
                                  <artifactId>lifecycle-mapping</artifactId>
                                  <version>1.0.0</version>
                                  <configuration>
                                        <lifecycleMappingMetadata>
                                               <pluginExecutions>
                                                      <pluginExecution>
                                                            <pluginExecutionFilter>
                                                                   <groupId>com.vaadin</groupId>
                                                                   <artifactId>
                                                                          vaadin-maven-plugin
                                                                   </artifactId>
                                                                   <versionRange>[7.1.11,)</versionRange>
                                                                   <goals>
                                                                          <goal>resources</goal>
                                                                          <goal>update-widgetset</goal>
                                                                          <goal>compile</goal>
                                                                          <goal>compile-theme</goal>
                                                                   </goals>
                                                            </pluginExecutionFilter>
                                                            <action>
                                                                   <ignore></ignore>
                                                            </action>
                                                      </pluginExecution>
                                               </pluginExecutions>
                                        </lifecycleMappingMetadata>
                                  </configuration>
                           </plugin>
                    </plugins>
             </pluginManagement>

       </build>

</project>


Zauważyłem jeszcze że folder VAADIN musi znajdować się w ścieżce 
src/main/webapp/ 
żeby wszystko działało poprawnie.