如何使用Maven运行Java程序

#Java #Maven

目标

在不依赖任何IDE的情况下, 如何使用maven运行java程序.

IDE做了什么

我们再使用IDEA开发时, 直接点击Run按钮,就可以运行.

这是IDEA 点击RUN按钮后执行的命令, 通过参数指定每个位于maven repository中的jar包的路径, 以及项目中的类路径, 然后执行main方法. 在IDEA中点击RUN/DEBUG, 做的事情如下

  • 使用java 命令执行
  • 命令中指定要运行的main方法的所在的class
  • 命令中通过-classpath指定所有依赖的路径
    • 对于三方依赖,指定其在.m2/repository中的路径
    • 对于本项目中的lib模块,指定其编译后在target目录的位置

你可以自己本地运行下,看看控制台输出的命令是什么.

/Library/Java/JavaVirtualMachines/jdk8.0.332/bin/java -Dmaven.multiModuleProjectDirectory=/Users/chen/workspace/system-controller -Dmaven.home=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3 -Dclassworlds.conf=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/m2.conf -Dmaven.ext.class.path=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven-event-listener.jar -javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=58771:/Applications/IntelliJ IDEA.app/Contents/bin -Dfile.encoding=UTF-8 -classpath /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds.license:/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds-2.6.0.jar org.codehaus.classworlds.Launcher com.example.App

Maven是否可以直接运行java程序

maven的mvn test可以直接执行test代码, 但是maven没有maven run命令来直接执行main方法. 借助exec-maven-plugin插件, 可以通过mvn exec来执行main方法.

如何使用maven直接运行java程序

按照以下命令, 就可以直接运行代码.

mvn clean compile
mvn exec:java -Dexec.mainClass="cpoo.win.DrinkDemo" 

spring-boot中也可以这样执行. 在多模块项目中,如果要运行的模块依赖了其他模块,需要把其他模块install,否则找不到依赖.

mvn clean compile
mvn exec:java -pl system-controller -Dexec.mainClass="com.bizmatics.system.Application"

-pl:指定打包的模块,可以用路径也可以用坐标,如果父项目同时是父目录,那么进入父目录下,直接“-pl 项目目录名”即可