刚用 Maven 的朋友是不是总在打包这一步卡壳?敲了
mvn package结果报一堆测试错误,半天打不出包;好不容易包打出来了,想传到公司私服又提示权限不够;还有每次下载依赖都慢得像蜗牛,眼睁睁看着进度条卡着不动。别着急,兔子哥第一次打包时,就因为测试方法没写对,mvn package执行了五遍都失败,后来才知道可以先跳过测试;配置镜像的时候更搞笑,把阿里云地址输错了一个字母,折腾俩小时才发现问题。今天就带零基础的朋友把 Maven 打包命令、跳过测试的方法、私服上传步骤和镜像加速技巧全学会,这些基础操作掌握了,用 Maven 才会顺手,一起往下看吧!一、打包命令:从编译到生成 jar 包,一条命令全搞定
最常用的打包命令:mvn package
新手最常用的就是这个命令,它会帮你完成从编译源码、运行测试到生成 jar/war 包的全过程。在项目根目录打开命令行,输入
mvn package,回车后就会看到一大串日志,最后如果出现 “BUILD SUCCESS”,就说明打包成功了。打包好的文件在哪儿呢?在项目的
target文件夹里,比如你的项目叫demo,打包后会生成demo-1.0-SNAPSHOT.jar(jar 包)或者demo-1.0-SNAPSHOT.war(war 包),具体是 jar 还是 war,取决于你 pom.xml 里的packaging配置。网友 “小张” 分享:“之前不知道
target目录,打包完到处找 jar 包,后来才发现就在项目根目录下的 target 里,真是白折腾了半天。”更干净的打包:mvn clean package
有时候你改了代码,但打包出来的还是旧内容,这时候就需要先清理再打包。
clean命令会删除target目录,确保打包的是最新代码。执行mvn clean package,Maven 会先删除旧的编译文件,再重新编译、测试、打包,推荐大家平时都用这个命令,不容易出问题。二、跳过测试:测试报错也能打包,两种方法任你选
场景问题:测试没写完或报错,想先打包该怎么办?
写代码的时候,可能测试方法还没写完,或者测试暂时通不过,但又急需生成包来调试,这时候就可以跳过测试环节。
方法一:命令行加参数(推荐)
在打包命令后面加
-DskipTests,比如:mvn clean package -DskipTests这个参数会让 Maven 编译测试代码,但不执行测试,适合测试代码没问题,只是暂时不想运行的情况。
如果连测试代码都不想编译(比如测试代码有语法错误),就用
-Dmaven.test.skip=true:mvn clean package -Dmaven.test.skip=true这个参数会跳过测试代码的编译和执行,更彻底,但平时尽量不用,还是得保证测试代码能编译通过。
方法二:在 pom.xml 里配置(不推荐)
在 pom.xml 的
build标签里加插件配置,可以默认跳过测试,但这样团队协作时别人拉代码也会跳过测试,容易出问题,新手慎用:xml
<build><plugins><plugin><groupId>org.apache.maven.pluginsgroupId><artifactId>maven-surefire-pluginartifactId><version>2.22.2version><configuration><skipTests>trueskipTests> configuration>plugin>plugins>build>兔子哥提醒:跳过测试只是临时办法,正式发布前一定要保证测试通过,不然代码有 bug 都不知道。
三、私服上传:把自己的 jar 包传到团队仓库,方便共享
基础问题:私服是啥?为啥要传私服?
私服就像团队内部的 “共享硬盘”,可以放大家自己开发的 jar 包,比如你写了个工具类模块,传到私服后,团队里其他人的项目直接加依赖就能用,不用每次都拷贝 jar 包。
上传步骤:配置 + 命令,两步搞定
- 配置私服地址和账号
首先在 Maven 的settings.xml里配置私服的账号密码(在标签里):
xml<servers><server><id>my-snapshotid> <username>adminusername> <password>123456password> server>servers>
然后在你的项目 pom.xml 里配置上传地址(在标签里):
xml<distributionManagement><snapshotRepository> <id>my-snapshotid> <url>http://localhost:8081/repository/maven-snapshots/url> snapshotRepository>distributionManagement> - 执行上传命令
配置好后,在项目根目录执行mvn clean deploy,Maven 会先打包,然后把包上传到私服。如果看到 “BUILD SUCCESS”,登录私服后台就能看到你上传的 jar 包了。
同事老王分享:“第一次传私服总报 401 错误,后来才发现是 settings.xml 里的 server id 和 pom.xml 里的不一致,改一致就好了,细节太重要了。”
四、镜像加速:下载依赖快 10 倍,国内镜像来帮忙
场景问题:默认仓库下载慢?阿里云镜像救急
Maven 默认从国外的中央仓库下载依赖,网速慢不说,还经常失败。解决办法就是配置国内镜像,比如阿里云镜像,下载速度能快很多。
配置步骤:改 settings.xml,一步到位
打开 Maven 的
settings.xml文件,在标签里添加阿里云镜像配置:xml
<mirrors><mirror><id>aliyunmavenid><mirrorOf>centralmirrorOf><name>阿里云公共仓库name><url>https://maven.aliyun.com/repository/centralurl>mirror><mirror><id>aliyunmaven2id><mirrorOf>publicmirrorOf><name>阿里云公共仓库2name><url>https://maven.aliyun.com/repository/publicurl>mirror>mirrors>保存后,下次下载依赖就会从阿里云仓库走,速度明显变快。兔子哥亲测,之前下一个 Spring Boot 的依赖要 5 分钟,配置镜像后几十秒就下完了。
五、避坑指南:新手常踩的 5 个坑,提前避开
- 打包时报 “测试失败”,找不到原因
先执行mvn test看看具体哪个测试用例失败了,修改测试代码后再打包;如果急着打包,先用-DskipTests跳过。 - 私服上传报 “403 Forbidden”
一般是权限不够,检查私服仓库是否允许 “Deploy” 操作,登录私服后台,找到对应的仓库,在 “Deployment Policy” 里设置为 “Allow Redeploy”。 - 配置镜像后还是从国外仓库下载
可能是镜像地址写错了,或者标签没设对,正确的应该是central或*(匹配所有仓库)。 - 打包成功但找不到 jar 包
肯定在target目录里,要是没有,说明打包没真的成功,仔细看日志,有没有 “BUILD SUCCESS”,失败的话会有 “BUILD FAILURE”。 mvn deploy上传到私服,本地仓库没有包deploy命令会先执行install,所以本地仓库也会有包,要是没有,说明上传失败了,看日志里的错误信息,通常是私服地址或账号错了。
六、自问自答:基础操作常问的问题
“
mvn package和mvn install有啥区别?什么时候用哪个?”mvn package只生成 jar 包到target目录;mvn install会把 jar 包安装到本地仓库,供其他本地项目依赖。自己用的模块打install,只是临时打包看看就用package。“私服上传必须用
mvn deploy吗?直接手动传行不行?”手动传也行,登录私服后台点 “Upload” 上传,但不如
mvn deploy方便,尤其是多模块项目,命令一行搞定,手动传容易传错版本。“镜像配置越多越好吗?加了好几个镜像还是慢。”
不是,镜像多了 Maven 会挨个试,反而慢。一般加一个阿里云镜像就够了,
mirrorOf设为*,覆盖所有仓库。结尾心得
Maven 的这些基础操作看着简单,但新手很容易在细节上栽跟头。兔子哥的经验是,打包命令记牢
mvn clean package,测试有问题就加-DskipTests;私服上传前先检查账号密码和地址是否一致;镜像一定要配,不然下载依赖能急死人。这些操作不用死记硬背,多练几次自然就熟了,遇到报错别慌,仔细看日志里的错误信息,大部分问题都能在日志里找到原因。Maven 用顺了,你会发现它比手动管理 jar 包方便太多,加油,新手朋友们!标签: demo-1.0-SNAPSHOT.jar demo-1.0-SNAPSHOT.war
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~