この質問は以前に行われたことがありますが、他の投稿の解決策を使用して修正することはできませんでした。 Mavenを使用してgwtプロジェクトの複雑な階層をコンパイルしようとしています。ライブラリをもう1つ追加する必要があるまで、すべてが正常に機能しました。具体的には、org.Eclipse.birt.runtimeです。
今、私はこのエラーを受け取ります:
[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-plugin:2.6.1:debug ....
..... [Lots of jars, many containing birt, no duplicates though] .....
Error while executing process. Cannot run program "C:\Program Files\Java\jdk1.8.0_20\jre\bin\Java": CreateProcess error=206, The filename or extension is too long
私が使用している依存関係は次のとおりです。
<dependency>
<groupId>org.Eclipse.birt.runtime</groupId>
<artifactId>org.Eclipse.birt.runtime</artifactId>
<version>4.4.1</version>
</dependency>
私はついにそれを解決することができました:
Birtは、その依存関係とともに、単にライブラリを追加しすぎていて、クラスパスが長すぎてWindowsコマンドで処理できないことが判明しました。さらに、birtライブラリの名前はばかげています。
この依存関係を使用して解決し(ランタイムのみが必要でした)、libディレクトリとbirtディレクトリを作成し、そこにjarを自分で配置しました。
<dependency>
<groupId>org.Eclipse.birt.runtime</groupId>
<artifactId>org.Eclipse.birt.runtime</artifactId>
<version>4.4.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/birt/birt.runtime-4.4.1.jar</systemPath>
</dependency>
クライアント側で使用されていない場合、Birtはクラスパスに含まれる理由はありません。
残念ながら、Mavenは物事を必要以上に難しくすることがあります。したがって、Mavenでは、GWTクライアントコードをサーバー側コードに依存しない特定のMavenモジュールにする必要があります。次に、WARオーバーレイを使用してすべてを単一のWARに「マージ」します。
そのレイアウト(モジュールをapp-client
およびapp-server
と呼びましょう)を使用すると、gwt:run
またはgwt:debug
を起動するためのいくつかのソリューションがあります。
試したことはありませんが、app-server
出力ディレクトリを指すように hostedWebapp
を構成できます。
<hostedWebapp>../app-server/target/app-server-${project.version}/</hostedWebapp>
mvn clean
WARをパッケージ化する前に必ずapp-server
を実行してください。ただし、生成されたJSファイルはapp-client
(app-server
によって生成された)ではなくgwt:run
(WARオーバーレイとして)からのものであることを確認してください。
私が使用しているもの gwt-maven-archetypes :サーバー側のコードを別のサーブレットコンテナで起動し、 <noServer>true</noServer>
を使用します
パッケージ化する前にもmvn clean
を実行するか、-Dgwt.compiler.force
を使用して、gwt:compile
がDevModeで生成された*.nocache.js
ファイルを最新のものとして扱わず、アプリケーションを再コンパイルするようにしてください。