如何将CLASSPATH设置为Maven存储库?

xbp102n0  于 2023-08-03  发布在  Maven
关注(0)|答案(1)|浏览(128)

我有一个Maven项目,在pom.xml中配置了一些依赖项。
现在,当我运行mvn package时,依赖项被下载到~/.m2/repository中。最后,这是一个大的目录树,其中包含许多包含jar文件的目录和子目录。
我没有使用任何IDE -只是从命令行运行mvnjava
现在,当我尝试运行我的项目时:

$ java -cp target/my-app-1.0-SNAPSHOT.jar App

字符串
我得到一个NoClassDefFound错误-我可以理解,因为我试图访问我的代码中的依赖代码,它不在类路径中-没有任何东西定义到~/.m2/repository目录的CLASSPATH。
所以我的问题是-我如何从命令行运行我的程序,并让JVM使用来自~/.m2/repository的依赖项?
我一直在网上搜索这个问题,令人惊讶的是没有找到答案。我最终设法做到的是:

$ mvn dependency:build-classpath


然后将./target/my-app-1.0-SNAPSHOT.jar链接到这个字符串,然后将其与-cp选项一起使用。
是这样吗?它相当笨重。。
无论如何,我可以摆脱使用一些IDE,这很好。但是如何将我的应用程序打包在Docker镜像中呢?这是怎么做到的?

  • 谢谢-谢谢
lyr7nygr

lyr7nygr1#

问题是你在 * 反对 * Maven,而不是 * 与它一起工作。您应该让Maven处理所有与类路径相关的问题。
如果你想把所有的依赖jar都收集到一个文件夹中,Maven可以帮你完成。
如果你想运行或调试你的应用程序,无论是从IDE还是从命令行,Maven都可以为你做到。
如果您想构建一个包含所有依赖类的JAR文件,Maven可以为您做到这一点。
简而言之:使用工具,而不是反对它。

相关问题