Maven学习笔记--常用命令和设置

本文介绍了Maven的常用命令,如-Dmaven.test.failure.ignore=true跳过测试失败,-Dcheckstyle.skip=true忽略检查风格错误,以及-Dmaven.test.skip=true跳过测试。详细讲解了内置变量如${basedir}、${project.build.directory}等,并提到了如何配置JVM参数以解决内存和调试问题。此外,还说明了如何设置本地仓库和镜像中央仓库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1) 创建Maven项目
1.1 创建Maven的普通java项目: 
mvn archetype:generate  -DgroupId=packageName -DartifactId=projectName  
1.2. 创建Maven的Web项目:   
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=packageName -DartifactId=webappName
也可以直接输入mvn archetype:generate,会让你选择参数。

2) Maven的生命周期及其与之对应的命令
mvn eclipse:eclipse 生成Eclipse项目
mvn idea:idea 生成idea项目
mvn validate:验证工程是否正确,所有需要的资源是否可用。 
mvn compile:编译项目的源代码。 
mvn test-compile:编译项目测试代码。 
mvn test:使用已编译的测试代码,测试已编译的源代码。 
mvn package:已发布的格式,如jar,将已编译的源代码打包。 
mvn integration-test:在集成测试可以运行的环境中处理和发布包。 
mvn verify:运行任何检查,验证包是否有效且达到质量标准。 
mvn install:把包安装在本地的repository中,可以被其他工程作为依赖来使用 
mvn deploy:在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。 
mvn generate-sources:产生应用需要的任何额外的源代码,如xdoclet。

3) 获取帮助
mvn -v 显示版本 
mvn help:describe
参数: 1. -Dplugin=pluginName   2. -Dgoal(或-Dmojo)=goalName:与-Dplugin一起使用,它会列出某个插件的goal信息,
mvn help:describe -Dplugin=help 使用 help 插件的  describe 目标来输出 Maven Help 插件的信息。 
mvn help:describe -Dplugin=help -Dfull 使用Help 插件输出完整的带有参数的目标列
mvn help:describe -Dplugin=exec -Dfull 列出所有 Maven Exec 插件可用的目标 
mvn help:describe -Dplugin=compiler -Dgoal=compile -Dfull 获取单个目标的信息,此命令列出了Compiler 插件的compile 目标的所有信息 
mvn help:effective-pom 查看有效的POM,它会把从parent project继承下来的设置以及Maven的默认设置全部打印出来。
 
4) 发布第三方Jar到本地库中:
mvn install:install-file -DgroupId=xxx -DartifactId=yyy -Dversion=a.b -Dpackaging=jar -Dfile=yyy-a.b.jar

5) Web项目中运行tomcat或者jetty
mvn tomcat:run (指定端口:-Dmaven.tomcat.port=9090)
mvn jetty:run

6) 跳过测试
   
-Dmaven.test.skip(=true)

   忽略测试失败:-Dmaven.test.failure.ignore=true

   Maven编译checkstyle报错:–Dcheckstyle.skip=true

7) mvn dependency:sources
   运行一下,你项目里所依赖的jar包的源码就都有了,例如

mvn clean install dependency:sources -Dmaven.test.skip=true

 
8) dependency中scope的含义
依赖范围控制依赖是否在编译的classpath中,是否发布时一起打包。
- compile
compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。
编译范围依赖在所有的classpath 中可用,同时它们也会被打包。
- provided
provided依赖说明JDK 或者容器已提供该依赖。
例如, web应用中的javax.servlet-api就应该使用provided. 在编译期classpath中需要它,但是在打包好的WAR中不需要包含它。
它应由应用服务器或者servlet 容器提供。
- runtime
runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。
比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
- test
test范围依赖在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。
- system
system范围依赖与provided 类似,但是你必须显式的提供一个对于本地系统中JAR 文件的路径。
这么做是为了允许基于本地对象编译,Maven不会在仓库中去寻找它。

如果你将一个依赖范围设置成系统范围,你必须同时提供一个 systemPath 元素。


9)内置变量

${basedir} 项目根目录,也就是包含POM.xml的目录

${project.xxx} 当前pom文件的任意节点的内容,所有pom中的元素都可以用 project前缀进行引用,以下是部分常用的 
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar

上级工程的pom中的变量用前缀 ${project.parent } 引用

所有JVM中定义的java系统属性. 例如${java.home}, ${os.name}

系统的环境变量通过 env前缀引用, 例如${env.M2_HOME}


10) JVM参数

maven配置jvm参数的地方是%M2_HOME%/bin/mvn.bat文件,这是启动Maven的脚本文件,在该文件中你能看到有一行注释为:@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000.通过添加set MAVEN_OPTS可以为maven设定jvm参数了。比如:
1.建立远程调试,端口为:4000的设定为:
  set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000
注意:suspend最好设定为n.设定上述参数后,在eclipse中新建远程调试,设置端口为4000,这样通过jetty:run启动系统时就可以进行远程调试了。  

2.解决自动热部署时java.lang.OutOfMemoryError: PermGen space问题解决这一问题只需要增大PermGen区,设置方法为:
  set MAVEN_OPTS=-XX:MaxPermSize=128M

如果遇到 outofmemory错误,
        export MAVEN_OPTS="-XX:MaxPermSize=256M -Xms2048M -Xmx2048M"


11)设置本地仓库和镜像中央仓库

本地仓库默认下载到 ~\.m2 下面 ,如果想更改位置,可以在maven 安装包里面的 conf文件夹下面的 setting.xml文件里面加上 <localRepository>D:\repository</localRepository> 就会下载到D:\repositroy里面。 

也可以把maven 安装包下的setting.xml 文件复制到 本机的 .m2 文件夹下面 这样不直接修改 maven自带配置文件。 

打开setting.xml 加上 

<mirrors>
	  <mirror>
		  <id>opendaylight</id>
	      <mirrorOf>*</mirrorOf>
	      <name>OpenDaylight Mirror</name>
	      <url>http://nexus.opendaylight.org/content/groups/public/</url>
	   </mirror>
  </mirrors>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值