信息发布→ 登录 注册 退出

maven项目打包上传到私有仓库

发布时间:2026-01-11

点击量:
目录
  • 1. 背景
  • 2. 步骤
    • 2.1 修改pom.xml
    • 2.2 命令执行
    • 2.3 成功后的依赖
  • 3. 扩展

    1. 背景

      最近有些自己制作的工具包,需要单独抽取出来之后,在打包的时候,同时上传到自己的maven*仓库,供别人引用,并且还能够引用的时候看到源码。但是,在上传的过程中总是失败不成功,特别上火。最后总算成功,记录下步骤,希望能够帮助到需要的人。

    2. 步骤

      先说下我的要求:

    • 本地打包能够自动上传maven*仓库。
    • 别人引用后,能够看到源码及注释。

    2.1 修改pom.xml

    2.1.1 指定上传仓库地址

      首先需要到自己项目里的pom.xml里添加下边一段

     <distributionManagement>
            <repository>
                <id>releases</id>
                <url>http://maven.aaaa.com/nexus/content/repositories/thirdparty</url>
            </repository>
        </distributionManagement>
    

      上图中,id后边会说,这里的url的地址,是对应你仓库地址,你可以在浏览器里访问下类似http://maven.aaaa.com/nexus的地址,输入账号密码,登录后,如下图4对应的地址,就是:


      需要注意的是,因为上图中,我们仓库有好几个,我是上传到了3对应的仓库,你可以根据你们实际的仓库地址来就行。
      另外id对应的releases其实是与指定的maven配置文件conf/setttings.xml中对应,如下图所示:


      如果对应的settings.xml里没有配置<servers>对应的标签,那也需要添加一下。如下示例:

      <servers>
        <server>
        	<!--与2.1.1中的id值对应-->
            <id>releases</id>
            <!--账号密码需要与*登录账号密码一致-->
            <username>admin</username>
            <password>znxd</password>
        </server>
      </servers>
    

      还有,注意仓库的账号密码需要正确。

    2.1.2 添加源码插件

       上边的配置仅仅是指定仓库的地址,因为还需要让下载依赖的人,能够看到源码,因此还需要有一个插件,maven-source-plugin。再找到项目的pom.xml,添加如下插件:

    <!-- 上传源码 -->
       <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.1</version>
            <configuration>
                <attach>true</attach>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    

       最后,总结一下现在pom.xml新增的这俩东西的位置:

    <project>
    	<!-----------省略多余的依赖---------->
    	<build>
            <plugins>
             <!-----------省略多余的plugin---------->
             <!-- 上传源码 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.0.1</version>
                    <configuration>
                        <attach>true</attach>
                    </configuration>
                    <executions>
                        <execution>
                            <phase>compile</phase>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <distributionManagement>
            <repository>
                <id>releases</id>
                <url>http://maven.aaaaa.com/nexus/content/repositories/thirdparty</url>
            </repository>
        </distributionManagement>
    </project>
    

    2.2 命令执行

      配置完成了之后,就可以执行命令了,这里可以通过两种命令实现,一种是开发工具idea里执行,另一种是通过环境变量的mvn命令。

      注意,不管用下边哪种命令,都需要先注意版本号,如果*里存在你这个版本的包,那肯定会打包上传不成功,可能会报错:Return code is: 400, ReasonPhrase: Bad Request

      因此,别忘了改下版本。如下图所示:

    2.2.1 idea中执行

      如果你的开发工具是idea,其实eclipse也一样,建议用这种方式。
      在开发工具中,找到右侧的maven project,如下图所示:


      最终的命令,其实是执行了clean deploy。如果执行完后出现大概下边的日志,说明成功了。

    [INFO] Building jar:*******
    [INFO] Installing ****  to  *****
    [INFO] --- ****   Uploading:
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    

      当然,也可以通过浏览器去访问下,找下是否仓库里有对应jar包。

    2.2.2 mvn命令执行

      如果想使用mvn命令,那就需要注意maven环境变量配置,这里不说咋配置mvn命令了,这里说下步骤和注意的地方。
      首先,打开项目所在目录,通过`cmd打开当前目录,如下图所示:

    执行命令如下:

    mvn -s "C:\Program Files\apache-maven-3.5.011\conf\settings-154waiwang.xml" deploy
    

      其中 -s--settings的缩写。

       这里我也是被坑惨了,我一直以为,因为我在配置maven环境变量的时候,指定了maven_home/m2_home,我觉得,当我使用mvn命令时,会自动使用对应的settings.xml文件进行打包,然后并不是,所以为什么上边需要通过-s来指定下settings.xml才可以。

       如果不指定的话,会报错Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1] ,大概是无权限的意思。看来应该是不指定的话,会走一个默认的文件,因为那个文件里没有对应的账号密码,因此会报错。

    2.3 成功后的依赖

       上传成功后,可以通过地址找一下,如下图即表示成功:

    3. 扩展

       比如你做这个依赖包,可能后边还会有更新的时候,但是如果以前的依赖包已经被别人使用,那不可能一个个的通知使用者,maven本身提供这种自动下载高版本的功能,只需要对version标签的值改一下。如下:

    <dependency>
         <groupId>com.agri</groupId>
         <artifactId>znxd-framework</artifactId>
         <version>[1.0,)</version>
     </dependency>
    

       其中[1.0,)表示更新从1.0版本开始的最新包。这样有个好处就是,当你的扩展包更新成大于1.0的包时,使用人的工程里,会自动变更为最新的包。这样你就可以在写错代码的时候,偷偷的自己更新成最新的包,避免尴尬。

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!