如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

问题描述 投票:0回答:5

我对java和maven都是全新的,所以这可能非常简单。

如果我遵循 maven2

hello world
说明:

http://maven.apache.org/guides/getting-started/maven-in- Five-minutes.html

一切正常。如果我随后更改

pom.xml
以从远程存储库引入依赖项,则该依赖项的文件将存储在
~/.m2/repository/new-dependency/
中。

使用

hello world
指令中的语法来运行应用程序需要我将依赖项的绝对路径添加到我的类路径中(通过设置环境变量或通过命令行开关):

java -cp target/my-app-1.0-SNAPSHOT.jar:/.../.m2/.../new-dependency.jar com.mycompany.app.App

这显然很快就会变得笨拙:)

我怀疑这不是运行 java 程序的常用方式,我只需要阅读有关 .jar 文件的更多信息,但在我这样做时,我将不胜感激有关如何正确执行此操作的任何提示。

顺便说一句,我没有使用 IDE。来自命令行的 vim。

谢谢!

迈克。

java maven-2 maven
5个回答
28
投票

你可以使用maven本身来运行它,我相信它为你设置了类路径。

mvn compile

将编译它 然后你就跑:

mvn exec:java -Dexec.mainClass="com.mycompany.app.App"  

它将执行它。

您可以参阅 http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ 了解有关运行方式的更多信息(包括传递命令行args 到你想要运行的东西)


18
投票

您可以通过将 Main-Class 属性添加到其清单文件中来使 jar 可执行。在 Maven 中,这是由归档器插件完成的。要添加 Main-Class 属性,请将其添加到您的 pom.xml 中:

 <build>
   <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>        
      <configuration>
        <archive>
          <manifest>
            <addClasspath>true</addClasspath>
            <mainClass>com.mycompany.app.App</mainClass>
          </manifest>
        </archive>
      </configuration>
    </plugin>
  </plugins>
 </build>

您现在可以使用以下命令运行 jar:

java -jar myjar.jar
或双击它(并非在所有平台上都可用)。


3
投票

如果您希望对您和其他人来说简单,那么您可以使用 maven-assemble-plugin 生成一个包含所有依赖项的 jar。示例如下:http://maven.apache.org/plugins/maven-assemble-plugin/usage.html,执行部分:构建程序集


3
投票

您可以使用 maven-shade-plugin 它将创建一个具有所有依赖项的可执行 uber war。

使用 appassembler-plugin 创建一个导入所有依赖项的脚本,并让您从命令行执行主类。


0
投票

为了完整起见,值得一提的是另一个选项。

Spring Boot可以在 UNIX 系统上创建可执行 JAR 文件

© www.soinside.com 2019 - 2024. All rights reserved.