1. repositorie 结构说明
repositorie 表示下载项目依赖库文件的maven仓库地址

<repositories>
  <repository>
      <!-- 仓库ID -->
      <id>nexus</id>
      <!-- 仓库名称 -->
      <name>Nexus</name>
      <!-- 仓库地址 -->
      <url>http://192.168.1.x:xxxx/repository/maven-public/</url>
      <!-- 仓库中版本为releases的构件 -->
      <releases>
          <!-- 是否支持更新-->
          <enabled>true</enabled>
          <!-- 构件更新的策略,可选值有daily, always, never, interval:X(其中的X是一个数字,表示间隔的时间,单位min),默认为daily-->
          <updatePolicy>always</updatePolicy>  
          <!-- 校验码异常的策略,可选值有ignore, fail, warn -->
          <checksumPolicy>warn</checksumPolicy>  
      </releases>
       <!-- 仓库版本为snapshots的构件-->
      <snapshots>
           <!-- 是否支持更新-->
          <enabled>true</enabled>  
          <!-- 同上 -->
          <updatePolicy>always</updatePolicy>  
          <!-- 同上 -->
          <checksumPolicy>warn</checksumPolicy>  
      </snapshots>
  </repository>
</repositories>

如果是公司本地仓库,而且需要认证才能访问,需要在本地maven的conf\settings.xml文件中添加如下配置内容

<servers>  
    <server>  
        <id>nexus</id>  
        <username>admin</username>  
        <password>admin</password>  
     </server> 
</servers>

2. distributionManagement 结构说明
distributionManagement 表示项目打包成库文件后要上传到仓库地址

<distributionManagement>
    <!-- 正式版本 -->
    <repository>
        <uniqueVersion>false</uniqueVersion>
         <!-- nexus服务器中用户名(settings.xml中<server>的id)-->
        <id>releases</id>
         <!-- 自定义名称 -->
        <name>Releases Repository</name>
        <url>http://192.168.1.x:xxxx/repository/maven-releases/</url>
        <layout>default</layout>
    </repository>
    <!-- 快照 -->
    <snapshotRepository>
        <uniqueVersion>true</uniqueVersion>
        <id>snapshots</id>
        <name>Snapshots Repository</name>
        <url>http://192.168.1.x:xxxx/repository/maven-snapshots/</url>
        <layout>legacy</layout>
    </snapshotRepository>
</distributionManagement>

如果是公司本地仓库,而且需要认证才能访问,也需要在本地maven的conf\settings.xml文件中添加如下配置内容(< repository >节点下的< id >对应setting.xml文件中的server的id)

<servers>  
    <server>  
        <id>releases</id>  
        <username>admin</username>  
        <password>admin</password>  
     </server>  
    <server>  
        <id>snapshots</id>  
        <username>admin</username>  
        <password>admin</password>  
    </server>  
</servers>

3. pluginRepositories 结构说明
pluginRepositories 表示插件的下载仓库地址,字段和用法与repositories中的repository基本一致

<pluginRepositories>
  <pluginRepository>
      <id>nexus</id>
      <name>Nexus</name>
      <url>http://192.168.1.x:xxxx/repository/maven-public/</url>
      <releases>
          <enabled>true</enabled>
          <updatePolicy>always</updatePolicy>  
          <checksumPolicy>warn</checksumPolicy>  
      </releases>
      <snapshots>
          <enabled>true</enabled>  
          <updatePolicy>always</updatePolicy>  
          <checksumPolicy>warn</checksumPolicy>  
      </snapshots>
  </pluginRepository>
</pluginRepositories>

4. 常用的maven仓库命令
上传本地仓库

mvn install:install-file
-DgroupId=com.xxx
-DartifactId=xxx-sdk
-Dversion=1.0.0
-Dpackaging=jar
-Dfile=xxx-xxx-sdk-1.0.0.jar

参数说明
mvn install:install-file
-DgroupId=上面的groupId
-DartifactId=上面的artifactId
-Dversion=上面的version
-Dpackaging=jar
-Dfile=jar包的位置

上传远程仓库

mvn -X deploy:deploy-file
 -Dmaven.test.skip=true
 -DgroupId=XXX.XXX
 -DartifactId=XXX
 -Dversion=XXX 
 -Dpackaging=jar 
 -Dfile=XXX.jar  
 -DpomFile=pom.xml 
 -Durl=http://用户名:密码@远程私服仓库地址

阿里云仓库地址
https://maven.aliyun.com/mvn/guide
maven中央仓库地址
https://repo1.maven.org/maven2/



将已有jar包部署到私服

一、环境准备

本地电脑已安装maven
私服已经搭建好
私服对应仓库和账号权限开启,允许 deploy jar 包上去

二、meven私服连接配置

需要在./conf/setting.xml中配置需要远程上传库的地址,用户以及密码(如果需要认证):

<servers>
    <server>
      <id>maven-releases</id>
      <username>zm</username>
      <password>123456</password>
    </server>
</servers>

三、使用deploy命令上传

mvn deploy:deploy-file -Dmaven.test.skip=true -Dfile=E:\Work\MyWorkspace\idea\office-
pdf-util\src\main\resources\libs\aspose-words-16.8.0-jdk16.jar -DgroupId=aspose-words -
DartifactId=aspose-words -Dversion=16.8.0 -Dpackaging=jar -DrepositoryId=maven-releases 
-Durl=http://192.168.0.167:8081/repository/maven-releases

如果要在命令行临时指定setting.xml

mvn deploy:deploy-file --settings C:\Users\Liu\.m2\settings-zhiyi.xml -
Dmaven.test.skip=true -Dfile=E:\Work\MyWorkspace\idea\office-pdf-
util\src\main\resources\libs\aspose-words-16.8.0-jdk16.jar -DgroupId=aspose-words -
DartifactId=aspose-words -Dversion=16.8.0 -Dpackaging=jar -DrepositoryId=maven-releases 
-Durl=http://192.168.0.167:8081/repository/maven-releases

各参数代表含义为:

-Dmaven.test.skip=true                              //跳过编译、测试
-Dfile=D:\work\thirdjar\aspose-words-16.8.0.jar     //jar包文件地址,绝对路径
-DgroupId=pri.roy.mvn.test                          //gruopId--pom坐标,自定义
-DartifactId=mvn-api                                //artifactId--pom坐标,自定义
-Dversion                                           //版本号,自定义
-Dpackaging                                         //打包方式
-DrepositoryId                                      //远程库ID
-Durl                                               //远程库地址

四、结果截图如下

img

该操作常用来解决的问题

  1. 项目依赖第三方jar包,但maven中央仓库没有,这时可以选择下载后上传私服
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐