私は非常に興味深く見えるVaadinフレームワークに不慣れです。EclipseとMavenを使用してアプリケーションの開発とビルドを行います。mvnクリーンインストールを実行するたびに、アプリのビルドに非常に長い時間がかかることを非常に不愉快に思います。これは、ウィジェットのセット全体をコンパイルするためです。
レイアウトでボタンのみを使用している場合でも、アプリの構築には非常に時間がかかります。
私はしばらくの間インターネットと2冊の本で調査しましたが、使用しているコンポーネントのみをコンパイルし、セット全体をコンパイルしないようにする方法について十分な情報が見つかりません。
Mavenアーキタイプを使用してプロジェクトを作成しました。
mvn archetype:generate -DarchetypeGroupId=com.vaadin -DarchetypeArtifactId=vaadin-archetype-application -DarchetypeVersion=7.1.9
warをビルドするたびにウィジェットセットがコンパイルされていると確信しています。mvncleanを実行すると、ディレクトリが削除されます:/ src / main / webapp / VAADIN / widgetsetsおよび/ src / main / webapp / VAADIN / gwt-unitCache
mvn installを実行すると、ビルドが3分以上続きます。
...
[INFO] Compiling 6 permutations
[INFO] Compiling permutation 0...
[INFO] Process output
[INFO] Compiling
[INFO] Compiling permutation 1...
[INFO] Process output
[INFO] Compiling
[INFO] Compiling permutation 3...
[INFO] Process output
[INFO] Compiling
[INFO] Compiling permutation 2...
[INFO] Compiling permutation 4...
[INFO] Compiling
[INFO] Compiling permutation 5...
[INFO] Compile of permutations succeeded
[INFO] Linking into /.../example/src/main/webapp/VAADIN/widgetsets/com.my.example.AppWidgetSet; Writing extras to /.../example/target/extra/com.my.example.AppWidgetSet
[INFO] Link succeeded
[INFO] Compilation succeeded -- 167.103s
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ ade ---
[INFO] Packaging webapp
[INFO] Assembling webapp [example] in [/.../example/target/example-0.1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [/.../example/src/main/webapp]
[INFO] Webapp assembled in [562 msecs]
[INFO] Building war: /.../example/target/example-0.1.0-SNAPSHOT.war
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ ade ---
[INFO] Installing /.../example/target/example-0.1.0-SNAPSHOT.war to /.../example/0.1.0-SNAPSHOT/example-0.1.0-SNAPSHOT.war
[INFO] Installing /.../example/pom.xml to /.../example/0.1.0-SNAPSHOT/example-0.1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3:03.768s
[INFO] Finished at: Fri Jan 10 00:10:45 EST 2014
[INFO] Final Memory: 16M/81M
[INFO] ------------------------------------------------------------------------
この後、次のディレクトリを含むディレクトリ/ src / main / webapp / VAADIN / widgetsetsが再び生成されます。
WEB-INF
com.my.example.AppWidgetSet
また、/ src / main / webapp / VAADIN / gwt-unitCacheも生成します
カスタムウィジェットセットが必要ですか?ウィジェットアドオンを使用しておらず、Vaadinを初めて使用する場合は、まだ独自のウィジェットを作成していないと想定しています(?)の場合、Vaadinが提供するプリコンパイル済みウィジェットセットを使用できます。これを行うには、プロジェクトからxxx.gwt.xmlファイルを削除し、web.xml内のこのファイルへの参照をcom.vaadin.DefaultWidgetsetに置き換えます。
web.xml:
<init-param>
<name>widgetset</name>
<value>com.vaadin.DefaultWidgetSet</value>
</init-param>
pom.xml:
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiled</artifactId>
<version>7.1.9</version> <!-- or whatever version you're using -->
</dependency>
カスタムウィジェットセットが必要な場合(そして、必要がない場合は、将来さらに1つ必要になる可能性があります)、自分自身を支持して、別のプロジェクトに配置します。私の経験では、ウィジェットセットはめったに変更されないので、常に変化するプロジェクトにウィジェットセットを含める理由は何ですか。Vaadinが提供する上記のデフォルトのウィジェットセットは、ウィジェットを作成するための完全な青写真です。自分でビルドし、vaadin-client-compiled.jarからその構造をコピーするだけです。お気に入りのMavenビルドヘルパーを使用できます。私の場合はアセンブリです。Mavenプロジェクトを作成し、pom.xmlをセットアップし、xxx.gwt.xmlを追加して、web.xmlにその参照が含まれていることを確認してください。私自身の設定は、以下のようになります。
pom.xml:
<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>
<name>MyWidgetset</name>
<groupId>com.company</groupId>
<artifactId>mywidgetset</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<vaadin.version>7.1.9</vaadin.version>
<vaadin.plugin.version>7.1.9</vaadin.plugin.version>
</properties>
<dependencies>
<!-- vaadin -->
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client</artifactId>
<version>${vaadin.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiler</artifactId>
<version>${vaadin.version}</version>
<scope>provided</scope>
</dependency>
<!-- custom widgets (NOTE: addons without a widget do not belong here) -->
<dependency>
<groupId>org.vaadin.addons</groupId>
<artifactId>filteringtable</artifactId>
<version>0.9.3.v7</version>
</dependency>
<dependency>
<groupId>org.vaadin.addons</groupId>
<artifactId>popupbutton</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- vaadin update widgetset -->
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<version>${vaadin.plugin.version}</version>
<configuration>
<extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>
<webappDirectory>${basedir}/target/VAADIN/widgetsets</webappDirectory>
<hostedWebapp>${basedir}/target/VAADIN/widgetsets</hostedWebapp>
<force>false</force>
<strict>true</strict>
<noServer>true</noServer>
<compileReport>true</compileReport>
<style>OBF</style>
<runTarget>http://localhost:8080/</runTarget>
</configuration>
<executions>
<execution>
<goals>
<goal>resources</goal>
<goal>update-widgetset</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
</repository>
</repositories>
</project>
assembly.xml:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>build-my-widgetset-jar</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${basedir}/target/VAADIN/widgetsets</directory>
<outputDirectory>/VAADIN/widgetsets</outputDirectory>
<excludes>
<exclude>WEB-INF/</exclude>
</excludes>
</fileSet>
</fileSets>
</assembly>
MyWidgetset.gwt.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC
"-//Google Inc.//DTD Google Web Toolkit 1.7.0//EN"
"http://google-web-toolkit.googlecode.com/svn/tags/1.7.0/distro-source/core/src/gwt-module.dtd">
<module>
<inherits name="com.vaadin.DefaultWidgetSet" />
<inherits name="org.tepi.filtertable.gwt.FilterTableWidgetset" />
<inherits name="org.vaadin.hene.popupbutton.widgetset.PopupbuttonWidgetset" />
</module>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>MyWidgetset</display-name>
<servlet>
<servlet-name>MyWidgetset</servlet-name>
<servlet-class>com.vaadin.server.VaadinServlet</servlet-class>
<init-param>
<param-name>ui</param-name>
<param-value>com.company.mywidgetset.App</param-value> <!-- use it for testing the widgetset-->
</init-param>
<init-param>
<param-name>widgetset</param-name>
<param-value>com.company.mywidgetset.MyWidgetset</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyWidgetset</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
プロジェクト構造:
| pom.xml
|
\---src
+---main
| +---java
| | \---com
| | \---company
| | \---mywidgetset
| | App.java
| | MyWidgetset.gwt.xml
| |
| +---resources
| | assembly.xml
| |
| \---webapp
| \---WEB-INF
| web.xml
|
\---test
\---java
それをビルドし、jarをプロジェクトの依存関係として使用すれば完了です。これにより、GWTが「ウィジェットセットのコンパイル」と呼ぶ大きな苦痛から永久に解放されます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加