当前位置: 首页 > 面试题库 >

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

於炯
2023-03-14
问题内容

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

如果我在hello world这里按照maven2的说明进行操作:

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。

谢谢!

麦克风。


问题答案:

您可以通过将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或双击它(并非在所有平台上都可用)。



 类似资料:
  • 我有一个包含以下文件的Java项目: C:\MyProject\myPackage\MyTests.class C:\MyProject\lib\junit-platform-console-standalone-1.5.2.jar C:\MyProject\lib\other-library.jar MyTests 文件是使用 IDE 编译的,该 IDE 具有 junit-platform-co

  • 问题内容: 我有一个Maven项目,我通常可以从eclipse编译并运行它,但是当我从命令行编译它时,它的依赖项丢失了,并且出现了错误。只有下载依赖项并将它们添加到c:/ Java / jdk / jre / lib / ext后,我才能编译项目 如何从控制台行编译项目及其依赖项,而无需将其手动添加到jdk?编译器可以以某种方式读取Maven依赖项吗? pom.xml 问题答案: 从具有某些mav

  • 我使用以下基本Maven命令生成了一个项目: 该项目是正确创建的,我可以测试自动生成的App类,而没有任何问题的说明: 稍后,我向POM添加了一些依赖项,获得了以下文件: 最后,为了测试起见,我修改了之前由Maven自己生成的App类: 一系列奇怪的事情发生了: > 即使在POM中指定了较新版本的依赖项,但在.m2文件夹中,下载的版本似乎较旧(例如,commons-lang3的版本为2.1和2.5

  • 问题内容: 我想将我的项目打包在一个可执行的JAR中进行分发。 如何使Maven项目将所有依赖JAR打包到我的输出JAR中? 问题答案: 然后用 编译目标应在Assembly:single:single之前添加,否则不包括您自己项目中的代码。 通常,此目标与自动执行的构建阶段相关。这样可以确保在执行mvn install或执行部署/发布时构建JAR 。

  • 我正在写一个Spring引导应用程序,它需要从ibm笔记数据库中获取记录。为此,我必须使用一个jar库,它不能作为maven依赖项使用。因此,我将jar作为lib/com/ibm/note/1.0.0/notes-1.0.0.jar放在项目主页中,并将其作为本地存储库添加到pom文件中,如下所示。 我的应用程序在eclipse IDE中运行时没有任何问题。但是当我通过右键单击eclipse的pom

  • 我想将我的项目打包在一个单独的非可执行库JAR中进行分发。如何使Maven项目将所有依赖项JAR打包到输出JAR中?Maven assembly插件中有一个选项来创建一个具有依赖项的可执行JAR。有一个接收器来获得目标。但是,我需要构建一个没有类的库jar。我怎么才能造出这样的罐子?