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

2022-09-02 11:39:56

我对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。

谢谢!

话筒。


答案 1

你可以使用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/


答案 2

您可以通过将 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


推荐