运行jar,设置classpath

nik*_*ers 4 java jar classpath maven

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

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

And*_*s_D 11

无论如何,设置CLASSPATH和调用java -jar myjar.jar都不起作用.因为该java -jar命令忽略CLASSPATH环境变量以及-cp标志.

在这种情况下,您必须将类路径条目添加到Class-Path密钥的jar的MANIFEST中,例如:

 Class-Path: jar1-name jar2-name directory-name/jar3-name
Run Code Online (Sandbox Code Playgroud)


dan*_*ben 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>
Run Code Online (Sandbox Code Playgroud)

然后你可以运行:

mvn assembly:assembly
Run Code Online (Sandbox Code Playgroud)