前言
持续更新中…
Maven命令
1.mvn help:system
打印出java所有的系统属性和环境变量。
2.mvn clean compile
clean告诉Maven清理输出目录target/,compile告诉Maven编译项目的主代码(src/main/java目录下)。
不要问为什么只是编译了项目的主代码(resources中的资源配置文件呢?),因为这个命令会执行多个maven插件以及目标,其中就包括resources:resources。
3.mvn clean test
执行测试用例的执行,此命令牵扯到Maven生命周期多个插件和目标的执行,包括:clean:clean,resources:resources,compiler:compile,resources:testResources,complier:testCompile,surefire:test,其中最后surefire就是Maven中负责执行测试的插件,并输出测试报告,显示执行了多少,失败了多少,出错了多少,跳过了多少等。
4.mvn clean package
打包命令,如果POM文件中没有指定打包类型,默认就是jar类型。
此命令在最后打包之前,也会执行clean:clean,resources:resources,compiler:compile,resources:testResources,complier:testCompile,surefire:test等操作,最后还会执行jar:jar进行打包(jar插件的jar目标将项目打包成一个.jar的文件,输出到/target目录中)。
输入的.jar文件命名规则是项目的artifactId-version.jar规则。
5.mvn clean install
将项目最终的输出jar文件,安装到本地的Maven仓库中。这样其他项目通过groupId,artifactId和version就可以引用使用此jar了。
执行install,生命周期除了和package命令一样外,最后会额外执行一个install:install。
6.mvn archetype:generate
用来生成项目骨架。(其实就是生成一个Maven项目)
实际上是在运行maven-archetype-plugin插件,运行之后会看到很长的输出,然后命令行会提示一个默认编号,回车继续后要求陆续输入groupId,artifactId,version,包名package等,确认后最终创建了一个Maven格式的项目骨架。
7.mvn dependency:list
查看当前项目已解析的所有依赖。(直接依赖+传递依赖的)
而且每个依赖的范围也可以看到。
8.mvn dependency:tree
此命令不仅可以看到已解析的所有依赖(直接依赖+传递依赖的)和以来范围,还能在此基础上将当前项目的直接依赖定义为顶层依赖,而顶层依赖的依赖定义为第二层依赖,以此类推…就有第三层,第四层依赖,从而构建出一个依赖树,就可以清晰的展示哪个依赖是从哪条路径传递进来的了。
9.mvn dependency:analyze
分析当前项目的依赖情况,哪些需要但是没有直接定义依赖或哪些依赖了但却对当前项目没有用。
看上图,有两个中重要的部分,首先是Used undeclared dependencies found,说的是项目中使用到的,但却没有声明的依赖,这种依赖意味着存在潜在风险(依赖传递进来的,如果修改依赖的版本,传递的依赖版本可能也会变化,存在风险)。
还有一个重要的是Unused declared dependencies found,说的是项目中没有用到,但却显示声明了的依赖。不能盲目删除,因为此命令只会发现编译主代码和测试代码需要的依赖,一些执行测试和运行的需要依赖发现不了,所以需要谨慎删除以免报错。
10.mvn clean deploy
Maven会将项目构建输出的构件部署到配置对应的远程仓库,如果当前项目的版本是快照版本,则部署到远程仓库的快照版本仓库,否则就部署到发布版本的仓库。
部署到远程仓库需要在pom文件和setting文件(如果需要配置认证的话)配置远程仓库信息,可以参考这里Maven实战-2.pom.xml标签说明和Maven实战-3.setting.xml标签说明