EntryPointなしでモジュールをコンパイルするにはどうすればよいですか?
-
05-07-2019 - |
質問
UIを持たないGWTのユーティリティモジュールがあります(したがって、 com.google.gwt.core.client.EntryPoint
を継承するクラスはありません。このモジュールをGWT 1.7.1でコンパイルすると、次のエラーが表示されます:
[ERROR] Module has no entry points defined
このエラーを取り除くにはどうすればよいですか?ダミーのエントリポイントを本当に定義する必要がありますか? Googleはどのようにして独自のユーティリティモジュールをコンパイルしましたか?
解決 3
gwt-maven-plugin
Maven2プラグインを使用してコードをコンパイルしています。古いバージョンの maven-googlewebtoolkit2-plugin
プラグインからコードを移行しました。古いプラグインの場合、どのモジュールがエントリポイントであるかを指定する必要がありました。
<compileTargets>
<param>com.project.module.Module</param>
</compileTargets>
新しいプラグインの場合、
<module>com.project.module.Module</module>
プラグインはコンパイルするモジュールを見つけることができなかったため、&quot; *。gwt.xml&quot;を検索します。それらをすべて「UIモジュール」にコンパイルしました。 (エントリポイントが必要です)。
他のヒント
ユーティリティジャーはGWTでコンパイルする必要はありません。
これを他のGWTアプリケーションのライブラリとして再利用する場合は、1つのjarで.classおよび.javaファイルをjarし、クライアントソースがどこにあるかを示す.gwt.xmlがあることを確認するだけです。です。慣例(クライアントのクライアントクラス)に従うと、クライアントパッケージのタグを指定する必要があります。
次に、エントリポイントをコンパイルするプロジェクトでこの.gwt.xmlを継承していることを確認します。
いいえ、EntryPointは必要ありません。モジュールのないモジュールの例を次に示します:
<?xml version="1.0" encoding="UTF-8"?>
<module>
<source path="grid" />
<inherits name="com.google.gwt.user.User"/>
</module>
簡単な答えは、モジュールでコードをコンパイルしないことです。 GWTはそれらをソースコードとして必要とします。メインモジュール(エントリポイントを持つモジュール)をコンパイルすると、.gwt.xmlファイルで継承した他のモジュールのソースを使用して、プロジェクト全体をコンパイルします。
&amp;を構築するユーティリティモジュールがあります。いくつかの一般的なUI要素とjavascript / jsonの一般的なタスクを処理します。
(totspプラグインからcodehausプラグインに行に沿って移行された)私たちがしたことは、utilモジュールにエントリポイントを含めることでした。それはただ空でした。 (コメント「意図的なノーオペレーション」が含まれています)。
その後、pomは依存関係として事物を参照します。
eclipse GWTプラグインを使用している場合は、コンパイルの直前にポップアップするモジュールリストからEntryPointのないモジュールを削除するだけです。