4

Mavenで作成したプロジェクトがあります。「mvnpackage」を使用してJARをコンパイルしましたが、Springとインターネットの半分などに依存するため、できれば非常識なクラスパスを設定せずに実行したいと思います。簡単に実行できる方法はありますか?「mvnrun」のようなものが素晴らしいか、「java-jar」を実行できるようにすべての依存関係をjarにスローするオプションも素晴らしいでしょう。

これにどのように対処し、何をすることをお勧めしますか?〜/ .m2に基づいてCLASSPATHをエクスポートすると、おそらく害を及ぼす可能性があるためです;-)

4

3 に答える 3

11

とにかく設定CLASSPATHと呼び出しjava -jar myjar.jarは機能しません。コマンドはフラグだけでなく環境変数もjava -jar無視するためです。CLASSPATH-cp

この場合、次のClass-Pathように、キーのjarのMANIFESTにクラスパスエントリを追加する必要がありました。

 Class-Path: jar1-name jar2-name directory-name/jar3-name
于 2010-01-24T19:06:07.967 に答える
9

Mavenアセンブリプラグインを使用します。これにより、含まれているすべての依存関係を使用してJARが自動的に構築され、メインクラスパラメーターを設定してJARを実行可能にすることができます。

ドキュメントは混乱を招く可能性があるため、POMがどのように表示されるかの例を次に示します。

<build>
   <plugins>
       <plugin>
           <artifactId>maven-assembly-plugin</artifactId>
           <version>2.1</version>
           <configuration>
               <descriptorRefs>
                   <descriptorRef>jar-with-dependencies</descriptorRef>
               </descriptorRefs>
               <archive>
                   <manifest>
                       <mainClass>package.of.my.MainClass</mainClass>
                       <packageName>package.of.my</packageName>
                   </manifest>
               </archive>
           </configuration>
        </plugin>
   </plugins>
</build>

そして、次のように実行できます。

mvn assembly:assembly
于 2010-01-24T17:59:32.717 に答える
1

Mavenアセンブリプラグインを調べてください。そして、プラグインに必要なXMLファイルを作成し、プラグインで動作するようにPOMファイルを変更したら、次のコマンドで実行できます。

mvn assembly:assembly  

これにより、すべての依存関係を持つJARが作成されます。

于 2010-01-24T18:00:58.833 に答える