MavenAppassemblerを使用してアセンブリを作成しています。クラスパスが長すぎるため、「入力行が長すぎます」というメッセージが表示されます。ここでの提案は、ブーターWindowsプラットフォームを使用することですが、JavaServiceWrapperを使用するように制限されています。java6のワイルドカードクラスパスとjavaサービスラッパーを使用する方法はありますか?
7 に答える
やってみました:
<useWildcardClassPath>true</useWildcardClassPath>
これで問題は解決しましたが、すでにお持ちでない場合は、次のものを使用していることも確認する必要があります。
<repositoryLayout>flat</repositoryLayout>
プラグインを作成したり、既存のプラグインを拡張したりしない限り、答えは「いいえ」のようです。これは、元の質問に対する「答え」ではありません。
http://jira.codehaus.org/browse/MAPPASMにバグを報告して対処することをお勧めします。私はJSW統合を作成しましたが、もう少し作業が必要であることを知っています。
リポジトリ(つまりlib)ディレクトリのディレクトリ構造をフラット化することもできます。デフォルトでは、appassemblerは、クラスパスに不要な長さを追加する可能性のある深いディレクトリ構造を保持します。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>1.3.1</version>
<configuration>
<programs>
<program>
<mainClass>com.mycompany.app.MyApp</mainClass>
<name>runMyApp</name>
</program>
</programs>
<repositoryLayout>flat</repositoryLayout>
</configuration>
</plugin>
</plugins>
</build>
Windowsコマンドプロンプトでは、コマンドプロンプトで使用できる文字列の最大長は8191文字です。
したがって、プロジェクトに依存関係が多すぎると、長いクラスパスが生成されます。
この状況を克服するために、maven-appassemblerはオプションを提供しました
構成セクションの下にこれらの2行を追加します
<configuration>
<repositoryLayout>flat</repositoryLayout>
<useWildcardClassPath>true</useWildcardClassPath>
</configuration>
これら2つのオプションのドキュメント:(ドキュメント)
useWildcardClassPath:
多くの依存関係がある場合があります。これは、クラスパスが非常に長くなり、長くなりすぎることを意味します(特に、Windowsベースのプラットフォームの場合)。このオプションは、このような状況で役立ちます。このオプションを有効にすると、クラスパスにはクラスパスワイルドカード(REPO / *)のみが含まれます。ただし、これはJava1.6以降およびrepositoryLayoutflatとの組み合わせでのみ機能することに注意してください。
repositoryLayout:
生成されたMavenリポジトリのレイアウト。サポートされているタイプ-「デフォルト」(Maven2)| 「レガシー」(Maven1)| 「フラット」(フラットlib /スタイル)。「レガシー」スタイルは、Maven2.2.1以前で実行している場合にのみサポートされます。
ロングショットとして...
JSWを使用したことがない場合は、 http://maven.apache.org/plugins/maven-assembly-plugin/source-repository.htmlのコードに基づいて独自のアセンブリプラグインを作成し、代わりに使用することができます。