-
背景
最近有些自己制作的工具包,需要单独抽取出来之后,在打包的时候,同时上传到自己的maven私服仓库,供别人引用,并且还能够引用的时候看到源码。但是,在上传的过程中总是失败不成功,特别上火。最后总算成功,记录下步骤,希望能够帮助到需要的人。 -
步骤
先说下我的要求:
本地打包能够自动上传maven私服仓库。
别人引用后,能够看到源码及注释。
2.1 修改pom.xml
2.1.1 指定上传仓库地址
首先需要到自己项目里的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>
注意:不能引用spring-boot-maven-plugin插件,这个插件一旦引入生效,就表示你当前做的jar包是一个可运行的包,而不是我们往私服上传的工具包了
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 成功后的依赖
上传成功后,可以通过地址找一下,如下图即表示成功:
- 扩展
比如你做这个依赖包,可能后边还会有更新的时候,但是如果以前的依赖包已经被别人使用,那不可能一个个的通知使用者,maven本身提供这种自动下载高版本的功能,只需要对version标签的值改一下。如下:
<dependency>
<groupId>com.agri</groupId>
<artifactId>znxd-framework</artifactId>
<version>[1.0,)</version>
</dependency>
其中[1.0,)表示更新从1.0版本开始的最新包。这样有个好处就是,当你的扩展包更新成大于1.0的包时,使用人的工程里,会自动变更为最新的包。这样你就可以在写错代码的时候,偷偷的自己更新成最新的包,避免尴尬。
————————————————
版权声明:本文为CSDN博主「茁壮成长的凌大大」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wohaqiyi/article/details/116521311