如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?
我对 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 从命令行。
谢谢!
麦克风。
I am brand new to both java and to maven, so this is likely very simple.
If I follow the maven2 hello world
instructions here:
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
everything works OK. If I then alter pom.xml
to bring in a dependency from a remote repository, the files for this dependency get stored in ~/.m2/repository/new-dependency/
.
Using the syntax in the hello world
instructions to run the application requires that I add the absolute path to the dependency to my classpath (either by setting the environment variable or via the command line switch):
java -cp target/my-app-1.0-SNAPSHOT.jar:/.../.m2/.../new-dependency.jar com.mycompany.app.App
This will obviously get unwieldy quickly :)
I suspect that this is not the usual way of running a java program and that I just need to read more about .jar files, but while I am doing so I would appreciate any tips on how to do this properly.
I am not using an IDE, btw. vim from the command line.
Thanks!
Mike.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
你可以使用maven本身来运行它,我相信它为你设置了类路径。
将编译它
然后你运行:
这将执行它。
您可以看到 http://www .vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ 有关运行方式的更多信息(包括将命令行参数传递给您想要的东西)跑步)
You can use maven itself to run it, I believe it sets the classpath for you.
will compile it
then you run:
which will execute it.
You can see http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/ for some more info on ways to run (including passing command-line args to the thing you want to run)
您可以通过将 Main-Class 属性添加到其清单文件来使 jar 可执行。在 Maven 中,这是由归档器插件完成的。要添加 Main-Class 属性,请将其添加到您的 pom.xml 中:
您现在可以使用以下命令运行您的 jar:
java -jar myjar.jar
或双击它(并非所有版本都可用)平台)。You can make a jar executable by adding the Main-Class attribute to its manifest file. In Maven this is done by the archiver plugin. To add the Main-Class attribute, add this to your pom.xml:
You can now run your jar with the command:
java -jar myjar.jar
or by double clicking on it (not available in all platforms).如果您希望对您和其他人来说简单,那么您可以使用 maven-assemble-plugin 生成一个包含所有依赖项的 jar。示例如下: http://maven.apache.org/plugins/maven - assembly-plugin/usage.html,执行部分:构建程序集
If you want it simple for you and others, then you can generate a jar with all dependencies in it, using the maven-assembly-plugin. Example is here: http://maven.apache.org/plugins/maven-assembly-plugin/usage.html, section Execution: Building an Assembly
您可以使用 maven-shade-plugin 它将创建一个可执行的 uber war与所有依赖项。
或者
使用 appassembler-plugin 创建一个导入所有依赖项的脚本并让您从命令行执行主类。
You can use the maven-shade-plugin which will create an executable uber war with all dependencies.
OR
Use the appassembler-plugin which creates a script that imports all dependencies and lets you execute a main class from the command line.
为了完整起见,值得一提的是另一种选择。
Spring Boot 可以创建一个 UNIX 系统上的可执行 JAR 文件。
For completeness, it's worth mentioning another option.
Spring Boot can create an executable JAR file on UNIX systems.