我正在使用很多依赖项来攻击基于 Maven 的项目;该项目通常是在 Eclipse 中开发的,但我需要从命令行开始处理它。
如何以理智的方式构建+执行项目?像mvn run
这样的东西,但当然Maven不适合运行Java项目(出于某种原因)。
问题在于指定 java 命令行的所有依赖项,我甚至不知道如何自动生成它。我现在可以使用程序集:单个 maven插件(使用 jar-with-dependencies 描述符)处理它,它会将依赖项打包到单个.jar中。
然而,确实存在很多依赖关系,并且组装阶段可能需要大约两分钟,这大大扰乱了我的黑客测试周期,所以我正在寻找其他方法以最小的构建开销运行项目 - 任何建议,请?
注意:一种可能性是在Eclipse中运行一次并捕获java命令行。然而,这只是一次性的黑客攻击,而不是一般的解决方案,以防我稍后更改pom.xml
或从套件中进入另一个项目而不再访问Eclipse。
答案 0 :(得分:3)
答案 1 :(得分:1)
请参阅此问题:How can I create an executable JAR with dependencies using Maven?。您可以使用dependency-plugin在包阶段之前在单独的目录中生成所有依赖项,然后将其包含在清单的类路径中。
答案 2 :(得分:1)
关于找出项目依赖项 - 您可以使用maven依赖项插件
http://maven.apache.org/plugins/maven-dependency-plugin/list-mojo.html
如果你想将它们放入文件中,它就像是
mvn dependency:list > dependencies.txt
答案 3 :(得分:0)
我看到三个解决方案:
onejar-maven-plugin - 比使用jar-with-dependencies描述符
的assemlby更快使用onejar-maven-plugin,你将(...)得到一个漂亮干净的超级jar,里面有依赖jar。
Spring Boot Maven Plugin - 但这是专门用于Spring项目
Maven Assembly Plugin带有自定义描述符。这个自定义描述符应该将所有依赖项抓取到lib
文件夹中,maven-jar-plugin应该根据这个新位置在Manifest.fm中设置Class-Path
。在此之后,您可以简单地执行您的程序或使用lib文件夹将您的jar压缩为分发。
在此之后可以使用一个命令在您的计算机或任何其他程序上运行您的程序:
java -jar myjar.jar