5

アセンブルされた gwt コンパイルを別の戦争で再利用しようとしています。このために、現在の Maven モジュールのパッケージを から に変更しようとしwarていpomます。次に、maven-assembly-plugin を使用して gwt のモジュール js 出力を圧縮し、後で別の war モジュールで使用する予定です。

Validation sampleの pom.xml で、パッケージング タグを から に変更してみ<packaging>war</packaging>まし た。gwt-maven-plugin がコンパイルに入ることはありません。代わりに、コンパイルをスキップします!!!!!<packaging>pom</packaging>

  1. What is happening?
  2. Is this expected?
  3. Is there any workaround?

ここに画像の説明を入力

4

2 に答える 2

4

複数のgwtコンパイル済みモジュールを1つのファイルに結合するには、 maven-dependency-plugin.warを使用すると非常に簡単です。

  1. すべてのgwtサンプルを習慣的(.war)としてパッケージ化し、それらをインストールするmvn installmvn deploy、プライベートMavenリポジトリがある場合。
  2. タイプが空のmavenモジュールを作成します。warコードはありませんが、mavenフォルダー構造を使用して、グローバルなどの必要な追加のものをここに配置できますsrc/main/webapp/index.html
  3. 以下に示すようなものを使用するように新しいモジュールを構成し、maven-dependency-plugin以下を実行しますmvn package

    <dependency>
        <groupId>my.group</groupId>
        <artifactId>example1</artifactId>
        <version>...</version>
        <type>war</type>
    </dependency>
    ...
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <execution>
          <id>unpack-gwt-examples</id>
          <phase>prepare-package</phase>
          <goals>
            <goal>unpack-dependencies</goal>
          </goals>
          <configuration>
            <includeGroupIds>my.group</includeGroupIds>
            <includes>**/example1/**</includes>
            <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}</outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
    

最後に、他のMavenプラグインと同様に、gwt-maven-pluginに関連して、pom-packagingライフサイクルの適切なフェーズ(パッケージ化、インストール、またはデプロイ)を選択するだけで十分です。

  ...
  <packaging>pom</packaging>
  ...
     <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        ...
        <configuration>
        ...
        </configuration>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>compile</goal>
                </goals>
            </execution>
        </executions>
      </plugin>

残念ながら、gwt-maven-pluginは、パッケージ化がpomの場合、特にコンパイルを許可しません。CompileMojo.javaの行#269を参照してください。

于 2013-03-22T14:22:14.237 に答える
1

再利用可能なモジュール (コメントでサンプルとして言及されているもの) を EntryPoint のない個別の GWT プロジェクトとして作成できます。それらを次のようにパッケージ化しjar、以下をresourcesとして追加します。

  1. クライアント側のソースコード
  2. 最終的なコンパイルに必要なその他のリソース項目 (画像、xml ファイルなど)

このようなもの:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            ...
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/services/**</include>
                <include>**/client/**</include>
                <include>**/public/**</include>
                <include>**/*.gwt.xml</include>
            </includes>
        </resource>
    </resources>
</build>

それだけです。他の GWT プロジェクトで再利用できます。その場合は、依存関係を (再利用可能なモジュールに)pom.xmlおよびimportに追加するだけ*.gwt.xmlです。

Maven の動作に関しては、正しいようです。pomパッケージングは​​進行中ですpackage,installそしてdeploy段階と

デフォルトでは、コンパイル ゴールは「準備パッケージ」フェーズ中に実行されるように構成され、できるだけ遅く実行されます。

packageプラグインの実行でフェーズを変更することもできますが、コードがフェーズ中にいつコンパイルされるかを正確に知ることができないため、危険だと思います。

于 2013-03-22T12:05:36.543 に答える