0

動作中の単一の GWT プロジェクトを複数の Maven モジュールに変換しようとしています。新しい構造は次のようになります。

Project
|- pom.xml
|- Project-Common(only Common-Classes)
|--- pom.xml
|--- Packaging: jar
|- Project-War(includes *gwt.xml)
|--- pom.xml
|--- Packaging: war

私のファイルは次のようになります(多くの依存関係があります。問題をより明確にするために不要なものを削除したと思います) プロジェクト pom.xml:

<modelVersion>4.0.0</modelVersion>
<artifactId>project</artifactId>
<packaging>pom</packaging>
<name>Project - Modules</name>
<version>1.0.0-SNAPSHOT</version>

<parent>
    <groupId>com.project</groupId>
    <artifactId>project-parent-parent</artifactId>
    <version>2.0.0</version>
    <relativePath />
</parent>
<modules>
    <module>/project-war</module>
    <module>/project-common</module>
</modules>

プロジェクト共通 pom.xml:

<modelVersion>4.0.0</modelVersion>
<artifactId>project-common</artifactId>
<packaging>jar</packaging>
<name>Project - Common</name>
<version>1.0.0-SNAPSHOT</version>

<parent>
    <groupId>com.project</groupId>
    <artifactId>project-parent</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <relativePath />
</parent>

<build>
    <plugins>
        <plugin>
          <groupId>com.github.koraktor</groupId>
          <artifactId>mavanagaiata</artifactId>
          <executions>
            <execution>
              <id>load-git-branch</id>
              <phase>validate</phase>
              <goals>
                <goal>commit</goal>
              </goals>
              <configuration>
                <dirtyFlag>*</dirtyFlag>
                <gitDir>../../.git</gitDir>
              </configuration>
            </execution>
          </executions>
        </plugin>
     </plugins>
 </build>

プロジェクト戦争 pom.xml:

<modelVersion>4.0.0</modelVersion>
<artifactId>project-war</artifactId>
<version>1.1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>Project - WAR</name>

<parent>
    <groupId>com.project</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</parent>   

<dependencies>
    <dependency>
        <groupId>com.project</groupId>
        <artifactId>project-common</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>gwt-maven-plugin</artifactId>
            <version>2.7.0</version>
            <inherited>true</inherited>
            <configuration>
                <runTarget>/test.html</runTarget>
                <modules>
                    <module>com.project.modules.Test</module>
                </modules>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <id>VerifyRequestFactoryInterfaces</id>
                        <executable>java</executable>
                        <arguments>
                            <argument>-cp</argument>
                            <classpath />
                            <argument>com.google.web.bindery.requestfactory.apt.ValidationTool</argument>
                            <argument>${project.build.outputDirectory}</argument>
                            <argument>com.project.factorys.TestRequestFactory</argument>
                        </arguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-clean-plugin</artifactId>
            <version>2.4.1</version>
            <configuration>
                <filesets>
                    <fileset>
                        <directory>src/main</directory>
                        <includes>
                            <directory>gwt-unitCache/**</directory>
                        </includes>
                    </fileset>
                </filesets>
            </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.koraktor</groupId>
          <artifactId>mavanagaiata</artifactId>
          <executions>
            <execution>
              <id>load-git-branch</id>
              <phase>validate</phase>
              <goals>
                <goal>commit</goal>
              </goals>
              <configuration>
                <dirtyFlag>*</dirtyFlag>
                <gitDir>../../.git</gitDir>
              </configuration>
            </execution>
          </executions>
        </plugin>
    </plugins>
</build>

古いプロジェクトは私の Project-War にあり、Project & Project-Common を追加しました。このセットアップでは、プロジェクトがビルドされ、「新しい」 Project-War.war が取得されます。しかし、ErrorCode.java を Project-War から Project-Common に移動すると、次のエラーが発生します。

[情報] タイプ 'com.project.modules.TestViewImpl' のコンパイル失敗パスのトレース [情報] [エラー] '.../project/project-war/src/main/java/com/project/modules/TestViewImpl のエラー.java' [情報] [エラー] 20 行目: com.project.errorcodes.ErrorCode 型のソース コードがありません。必要なモジュールを継承するのを忘れましたか? [情報] [エラー] ヒント: モジュールからの継承チェーンを確認してください。必要なモジュールを継承していないか、モジュールがソース パス エントリを適切に追加していない可能性があります

4

2 に答える 2

0

あなたの Project-Common はそのソースを Project-War で利用できるようにパッケージ化していないため、GWT は効果的にErrorCodesクラスのソースを見つけることができません。

maven-source-pluginProject-Commonの のゴールを使用してjar-no-forkソースをパッケージ化し、Project-War の Project-Common に 2 つ目の依存関係を追加する必要があり<classifier>sources</classifier>ます。src/main/javaまたは、ソースを Project-Common の JAR にパッケージ化するリソース ディレクトリとして宣言します。


ちなみに、Mojo の GWT 用 Maven プラグインは、マルチモジュール プロジェクトにはあまり適していません。net.ltgt.gwt.maven:gwt-maven-pluginゼロからマルチモジュール ビルド用に設計された に切り替えることをお勧めします (免責事項: 私はそのプラグインの作成者であり、Mojo のプラグインの元メンテナーです)。

于 2016-01-22T11:18:32.380 に答える