如何从命令行编译Maven项目与所有依赖项?

我有一个Maven项目,我通常可以编译并从eclipse运行但是当我从命令行编译它时它的依赖项丢失了,我收到了错误。 我可以在下载依赖项之后编译项目,并将它们添加到c:/ Java / jdk / jre / lib / ext

如何从控制台行编译项目及其依赖项,而无需手动将其添加到jdk? 编译器可以以某种方式读取maven依赖项吗?

的pom.xml

 4.0.0 TCPPing TCPPing 0.0.1-SNAPSHOT  src   maven-compiler-plugin 3.3  1.8 1.8       commons-cli commons-cli 1.3.1   commons-net commons-net 3.3   ch.qos.logback logback-classic 1.1.6    

从具有一些maven支持的IDE(Eclipse,IntellIJ)运行应用程序应该非常简单。 这些IDE将负责创建正确的类路径。

如果您想手动执行此操作,请尝试以下操作:

更改到包含pom.xml的目录执行maven命令:

 mvn clean install 

这将编译您的项目并创建您在pom.xml文件中定义的jar。 它运行maven阶段清理并且每个阶段都要安装(编译,测试等)。

然后收集您用作依赖项的所有jar文件(运行项目所需):

 mvn dependency:copy-dependencies 

这将执行依赖项插件,该插件将所有依赖项复制到target/dependency

然后,您可以使用以下命令运行main方法:

 cd target/ java -cp TCPPing-0.0.1-SNAPSHOT.jar:dependency TCPPing 

-cp定义类路径(包含类的所有位置/ jar文件/文件夹)。 TCPPing是具有main方法的运行类。

注意:适用于Linux / Mac – 我认为Windows使用的是;

Javac对maven一无所知。 因此它不会使用maven pom.xml。

maven的价值在于它消除了构建,测试和发布项目的手动工作。

这包括获取依赖项,并将javac与javac一起添加到javac命令的类路径中。

您可以在maven下载依赖关系到〜/ .m2 / repository之后手动执行javac。 但是你需要告诉javac在哪里找到jar子。 这样就是通过classpath参数完成的。

如果您在使用mvn编译它之后尝试运行该项目,则需要在放置.class文件的同一文件夹中执行此操作。 因此应该是/ target / java或类似的。