Maven 常见问题及解决

将本地的 JAR 包推送到 Maven 仓库

发布:2023-10-30     分类:Java     标签:工具JavaMaven 阅读:356     评论:0

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
更新:2026-05-01
点击评论
评论区