运行jar,设置classpath

时间:2010-01-24 17:56:15

标签: java jar classpath maven

我有一个我用Maven制作的项目。我使用“mvn package”编译了一个JAR,现在我想运行它,最好不要设置一些疯狂的类路径,因为它依赖于Spring和一半的互联网或其他东西。有什么办法可以轻松运行吗?像“mvn run”这样的东西会很棒,或者把所有依赖项都放入jar中,所以我可以做“java -jar”也很精彩。

你如何处理这个问题,你建议做什么?因为基于〜/ .m2导出CLASSPATH可能只会带来伤害; - )

3 个答案:

答案 0 :(得分:11)

设置CLASSPATH并调用java -jar myjar.jar无论如何都无效。因为java -jar命令忽略CLASSPATH环境变量以及-cp标志。

在这种情况下,你必须在Class-Path键的jar的MANIFEST中添加类路径条目,如:

 Class-Path: jar1-name jar2-name directory-name/jar3-name

答案 1 :(得分:9)

使用Maven Assembly Plugin - 它将自动构建包含所有包含依赖项的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

答案 2 :(得分:1)

您需要查看Maven Assembly Plugin。然后,一旦您创建了插件所需的XML文件并修改了您的POM文件以使用该插件,您就可以使用以下命令运行它:

mvn assembly:assembly  

这将创建具有所有依赖项的JAR。