0

私は、開発にnetbeansを使用し、その他を構築するためにmavenを使用する単純なアプリケーションを持っています。私のアプリケーションは camel を使用し、Spring XML が構成されています。依存関係のある実行可能なjarを構築したかったので、「jar-with-deps」記述子でmaven-assemblyプラグインを使用しています。jar は正常にビルドされていますが、すべての依存関係がアンラップされ、これらの一部は他のリソースと同じパスに同じリソースを持っているため、互いに上書きしていると思います。winrar で jar を参照してこれを確認したところ、多くの場所で同じファイルが複数出現することがわかりました。別の依存関係でも使用される特定のパスでリソースを必要とする依存関係を停止できないため、これはいくつかの単純な Maven 構成では解決できないと考えています。ところで、アプリは netbeans 内で問題なく動作します。また、アプリケーション クラスが複数出現することもわかりました。

全体として、次のことを知りたい:

  1. そのような競合を見つけて、少なくともそれらを修正しない場合は報告する簡単な解決策はありますか? (そしてどうやって)

  2. depsをアンラップせずに親jarにjarを含めてから、マニフェストクラスパスにjarを含めるように(mavenで)アーカイバに指示できますか? これで問題は解決しますか、それとも同じ結果になりますか?

  3. 同じパスにアプリケーション クラスが複数出現するのはなぜですか?

問題の全体像を示すために、現在の結果の jar を WinRAR で表示すると、ルート パスに「log4j.properties」の 3 つのインスタンスがあり、meta-inf/ パスにファイル「spring.schemas」の 7 つのインスタンスがあります。いくつか。

4

1 に答える 1

1

すべての.jarを単一の.jarに.zipすることは不可能だと思います。これらの .jar の多くは、同じフォルダーにある .jar ファイル (log4j.properties、Spring XML ファイル) にリソースを持っているため、衝突が発生します。

クラスパスを設定してアプリケーションを起動できる起動スクリプトを提供することをお勧めします。そして、JDK1.5または1.6のいずれかで、フォルダーをクラスパスとして設定でき、このフォルダーのすべてのjarが含まれることを覚えています。

于 2009-01-18T09:16:56.257 に答える