0

私はMavenプロジェクトMainとプロジェクトUtilを持っています。

Project Utilは、gwt-devに依存するサードパーティのライブラリLibに依存しています。gwt-devは多くの競合を引き起こします。これは、GWTコンパイルにのみ必要であるため、「提供済み」としてマークする必要がありますが、「コンパイル」です。

したがって、UtilでLibを「提供済み」としてマークする必要があります。しかし、そうすると、Libクラスが見つからないため、メインプロジェクトはコンパイルされません。

現時点では、Libを「提供済み」としてマークし、メインに「提供済み」として含めています。Utilの依存関係を覚えておく必要があるので不便です。

どうすればこの問題を解決できますか?

4

1 に答える 1

1

スコープで使用Libし、 gwt-devを除外します。compile

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>Lib group</groupId>
      <artifactId>Lib artifact id</artifactId>
      <version>Lib version</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>com.google.gwt</groupId>
          <artifactId>gwt-dev</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>

ただの発言ですが、除外することは通常悪い習慣です。この場合、Libアーティファクトは(のバグ...)gwt-devとして持つ必要があるため、多くの選択肢はありません。したがって、除外を説明する適切なコメントを追加することを忘れないでください。providedLib

于 2012-05-22T09:26:52.760 に答える