Maven 常见问题及解决
将本地的 JAR 包推送到 Maven 仓库
settings 配置文件详解
<?xml version="1.0" encoding="UTF-8"?>
<!--
版权所有 Apache 软件基金会(ASF),根据 Apache 2.0 许可证发布。
详情请参见 http://www.apache.org/licenses/LICENSE-2.0
-->
<!-- Maven 配置文件 -->
<!--
本文件配置 Maven 的行为,包括:
- 本地仓库
- 代理与镜像
- 认证信息
- 环境特定的构建配置(Profiles)
-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<!-- 本地仓库 -->
<!--
指定 Maven 存储依赖的本地仓库路径,默认是 ${user.home}/.m2/repository。
-->
<localRepository>C:\MySofteware\CodeEnv\Maven\repository</localRepository>
<!-- 是否启用交互模式 -->
<!--
设置为 false 时,Maven 不会提示输入,自动使用默认值。
默认值为 true。
-->
<!-- <interactiveMode>false</interactiveMode> -->
<!-- 离线模式 -->
<!--
设置为 true 时,Maven 不会尝试连接网络。适用于没有网络时使用。
默认值为 false。
-->
<!-- <offline>false</offline> -->
<!-- 插件组 -->
<!--
添加额外的插件组 ID,Maven 会在这些组中查找插件。
默认会自动包含 "org.apache.maven.plugins" 和 "org.codehaus.mojo"。
-->
<pluginGroups>
<!-- <pluginGroup>com.your.plugins</pluginGroup> -->
</pluginGroups>
<!-- 代理配置 -->
<!--
配置代理服务器,Maven 会使用第一个标记为 active 的代理。
-->
<proxies>
<!-- 示例代理配置 -->
<!--
<proxy>
<id>proxyId</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>8080</port>
<nonProxyHosts>www.example.com|*.example.org</nonProxyHosts>
</proxy>
-->
</proxies>
<!-- 服务器认证 -->
<!--
配置服务器认证信息,如用户名、密码或私钥。
-->
<servers>
<!-- 示例认证配置 -->
<!--
<server>
<id>deploymentRepo</id>
<username>repoUser</username>
<password>repoPass</password>
</server>
-->
</servers>
<!-- 镜像配置 -->
<!--
配置镜像仓库,用于替代远程仓库下载。通常用于加速下载。
-->
<mirrors>
<!-- 示例镜像配置 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>阿里云 Nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<!-- 构建配置(Profiles) -->
<!--
配置不同的构建环境(例如开发、测试、生产环境)。可以在命令行或系统属性中激活。
-->
<profiles>
<!-- 示例配置 -->
<!--
<profile>
<id>env-dev</id>
<activation>
<property>
<name>target-env</name>
<value>dev</value>
</property>
</activation>
<properties>
<tomcatPath>/path/to/tomcat</tomcatPath>
</properties>
</profile>
-->
</profiles>
<!-- 激活的配置 -->
<!--
列出始终激活的构建配置(Profiles)。
-->
<!-- <activeProfiles> -->
<!-- <activeProfile>alwaysActiveProfile</activeProfile> -->
<!-- </activeProfiles> -->
</settings>
maven 环境可能存在的问题
1.pom 文件有问题
网络有问题,导致下载的 pom 文件有问题,需删除后重新下载
必要时可点击pom文件中的 artifactId 查看是否下载及下载是否正确,例如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
点击 spring-boot-starter-undertow 进入查看是否下载成功及正确
2.文件夹权限问题
如果 maven 仓库文件夹在c盘,可能会出现权限问题,导致jar无法下载。
在文件夹 属性 -> 安全 -> 针对账号进行编辑权限,设置 完全控制 即可。
3.版本不一致
Maven编译项目时出现如下报错:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
一般是电脑系统环境变量中的jdk版本 或maven版本,与当前idea 项目的不一致,修改一致后重新编译即可。
Maven 推送本地jar包到仓库
Maven 推送本地jar包到仓库(通用方式)
要将本地的 JAR 包推送到 Maven 仓库,可以使用 Maven 的 deploy:deploy-file 插件目标。以下是推送本地 JAR 包到 Maven 仓库的通用方式,步骤:
第一步:在 Maven 项目的根目录下,打开终端或命令行窗口。
第二步:运行以下 Maven 命令,将 JAR 包推送到仓库:
mvn deploy:deploy-file -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> -Dpackaging=jar -Dfile=<path-to-jar> -Durl=<repository-url> -DrepositoryId=<repository-id>
具体参数含义:
<groupId>:项目的 Group ID。
<artifactId>:项目的 Artifact ID。
<version>:项目的版本号。
<path-to-jar>:本地 JAR 包的路径。
<repository-url>:Maven 仓库的 URL。
<repository-id>:Maven 仓库的 ID。
根据实际情况替换上述命令中的占位符(\
第三步:运行命令后,Maven 将会将本地的 JAR 包推送到指定的 Maven 仓库。
确保在运行命令之前已经正确配置了 Maven 的 settings.xml 文件中的
注意:推送 JAR 包到远程 Maven 仓库需要有相应的权限和认证凭据。如果没有访问远程仓库的权限,可以考虑将 JAR 包安装到本地仓库(使用 mvn install:install-file 插件目标),或者搭建私有 Maven 仓库。
Maven推送本地jar包到远程仓库
需要将功能打成打包推上远程nexus仓库,具体推送及操作记录一下:
1. 配置pom.xml
在pom文件中添加远程仓库的地址和id.名称可以不需要.当然具体根据实际操作.
<!--配置远程仓库地址-->
<distributionManagement>
<repository>
<id>ceshi-id</id>
<name>名称</name>
<url>http://xxx.xxx.x.xx:8081/repository/ceshi-id/</url>
</repository>
</distributionManagement>
2. 配置Maven的setting.xml
在maven配置文件中配置远程仓库的账号密码,id和pom文件中的必须一致.
<servers>
<server>
<id>ceshi-id</id>
<username>用户名</username>
<password>密码</password>
</server>
</servers>
3. 打包并推送到远程仓库
使用以下命令进行推送
maven clean deploy
如果使用IDE,右侧可以直接点击命令 或者可以直接在命令栏使用命令推送.
Maven的三个常用打包启动相关命令
mvn clean package
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
mvn clean install
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
mvn clean deploy
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
其他maven命令:
编译:mvn compile
清理:mvn clean
测试:mvn test
打包:mvn package
安装到repository:mvn install(具有编译和打包的功能)
部署到tomcat:mvn deploy

评论区