Mavenを使用してVaadin 7で必要なウィジェットのみをコンパイルするにはどうすればよいですか?

raspacorp:

私は非常に興味深く見える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]

編集
0

コメントを追加

0

関連記事

分類Dev

ウィジェットセットのコンパイルを高速化するにはどうすればよいですか?

分類Dev

Tkinterのテキストウィジェットにファイルコンテンツを入力するにはどうすればよいですか?

分類Dev

XCTest:テストターゲットに変更を加えるだけの場合、Xcodeがプロジェクトを不必要に再コンパイルしないようにするにはどうすればよいですか?

分類Dev

ShowDialogでスタイルウィジェットを作成するにはどうすればよいですか?

分類Dev

Androidでオンラインのgif画像を使用してImageViewウィジェットを変更するにはどうすればよいですか?

分類Dev

bashシェルがパッケージのインストールを要求しないようにするにはどうすればよいですか?

分類Dev

pyqt4を使用してウィジェットのコンテンツを更新するにはどうすればよいですか?

分類Dev

PyQtのスタイルシートを使用してウィジェットを前面に表示するにはどうすればよいですか?

分類Dev

gwt:別のイベントでonClickによって作成されたウィジェットを使用するにはどうすればよいですか?

分類Dev

ウィジェットのインポート提案にマテリアルライブラリを使用するにはどうすればよいですか?

分類Dev

Javaのみを使用してvaadinで春のセキュリティログインページを作成するにはどうすればよいですか?

分類Dev

特定の必要なパッケージのcomposer.pharにインストールパスを設定するにはどうすればよいですか?

分類Dev

コンパイル済みのCコードをAndroidStudioプロジェクトに追加するにはどうすればよいですか?

分類Dev

Kivy-.kvファイルでウィジェットへのパスを把握するにはどうすればよいですか?

分類Dev

GWTテーブルの列とウィジェットをそれにスパンするにはどうすればよいですか?

分類Dev

メインウィンドウで作成されたウィジェットのQCloseEventを作成するにはどうすればよいですか?

分類Dev

PyQtでジョイスティック/コントローラーウィジェットを作成するにはどうすればよいですか?

分類Dev

CellList / CellTableからGWTのセルのウィジェットにイベント処理を委任するにはどうすればよいですか?

分類Dev

QT5:1つのスタイルシートを異なるウィジェットに適用するにはどうすればよいですか?

分類Dev

ソフトウェアマネージャーから古いバージョンのgccコンパイラをインストールし、プレーンな「gcc」コマンドで使用するにはどうすればよいですか?

分類Dev

ウィジェットを非表示にした後、ウィンドウのサイズを変更できるようにしながら、ウィンドウのサイズを変更するにはどうすればよいですか?

分類Dev

インストール済みパッケージのセットを再作成するために必要なDebianパッケージの最小セットをリストするにはどうすればよいですか?

分類Dev

Qt Designerに表示されるウィジェットのプロパティのみを見つけるにはどうすればよいですか?

分類Dev

オブジェクトのプロパティをWPFコントロールにバインドするにはどうすればよいですか?

分類Dev

tkinterのトップレベルウィジェットに入力された値を取得し、それをメインウィンドウで使用して表示するにはどうすればよいですか?

分類Dev

FlutterのHtmlウィジェットでフォントスタイルを変更するにはどうすればよいですか?

分類Dev

Android:ConstraintLayoutを使用してウィジェットを別のウィジェットの上に表示するにはどうすればよいですか?

分類Dev

特定の使用フラグを使用してインストール済みパッケージを照会するにはどうすればよいですか?

分類Dev

QTableWidget内のセルウィジェットの背景を選択できないようにするにはどうすればよいですか?

Related 関連記事

  1. 1

    ウィジェットセットのコンパイルを高速化するにはどうすればよいですか?

  2. 2

    Tkinterのテキストウィジェットにファイルコンテンツを入力するにはどうすればよいですか?

  3. 3

    XCTest:テストターゲットに変更を加えるだけの場合、Xcodeがプロジェクトを不必要に再コンパイルしないようにするにはどうすればよいですか?

  4. 4

    ShowDialogでスタイルウィジェットを作成するにはどうすればよいですか?

  5. 5

    Androidでオンラインのgif画像を使用してImageViewウィジェットを変更するにはどうすればよいですか?

  6. 6

    bashシェルがパッケージのインストールを要求しないようにするにはどうすればよいですか?

  7. 7

    pyqt4を使用してウィジェットのコンテンツを更新するにはどうすればよいですか?

  8. 8

    PyQtのスタイルシートを使用してウィジェットを前面に表示するにはどうすればよいですか?

  9. 9

    gwt:別のイベントでonClickによって作成されたウィジェットを使用するにはどうすればよいですか?

  10. 10

    ウィジェットのインポート提案にマテリアルライブラリを使用するにはどうすればよいですか?

  11. 11

    Javaのみを使用してvaadinで春のセキュリティログインページを作成するにはどうすればよいですか?

  12. 12

    特定の必要なパッケージのcomposer.pharにインストールパスを設定するにはどうすればよいですか?

  13. 13

    コンパイル済みのCコードをAndroidStudioプロジェクトに追加するにはどうすればよいですか?

  14. 14

    Kivy-.kvファイルでウィジェットへのパスを把握するにはどうすればよいですか?

  15. 15

    GWTテーブルの列とウィジェットをそれにスパンするにはどうすればよいですか?

  16. 16

    メインウィンドウで作成されたウィジェットのQCloseEventを作成するにはどうすればよいですか?

  17. 17

    PyQtでジョイスティック/コントローラーウィジェットを作成するにはどうすればよいですか?

  18. 18

    CellList / CellTableからGWTのセルのウィジェットにイベント処理を委任するにはどうすればよいですか?

  19. 19

    QT5:1つのスタイルシートを異なるウィジェットに適用するにはどうすればよいですか?

  20. 20

    ソフトウェアマネージャーから古いバージョンのgccコンパイラをインストールし、プレーンな「gcc」コマンドで使用するにはどうすればよいですか?

  21. 21

    ウィジェットを非表示にした後、ウィンドウのサイズを変更できるようにしながら、ウィンドウのサイズを変更するにはどうすればよいですか?

  22. 22

    インストール済みパッケージのセットを再作成するために必要なDebianパッケージの最小セットをリストするにはどうすればよいですか?

  23. 23

    Qt Designerに表示されるウィジェットのプロパティのみを見つけるにはどうすればよいですか?

  24. 24

    オブジェクトのプロパティをWPFコントロールにバインドするにはどうすればよいですか?

  25. 25

    tkinterのトップレベルウィジェットに入力された値を取得し、それをメインウィンドウで使用して表示するにはどうすればよいですか?

  26. 26

    FlutterのHtmlウィジェットでフォントスタイルを変更するにはどうすればよいですか?

  27. 27

    Android:ConstraintLayoutを使用してウィジェットを別のウィジェットの上に表示するにはどうすればよいですか?

  28. 28

    特定の使用フラグを使用してインストール済みパッケージを照会するにはどうすればよいですか?

  29. 29

    QTableWidget内のセルウィジェットの背景を選択できないようにするにはどうすればよいですか?

ホットタグ

アーカイブ