首页 技术 正文
技术 2022年11月7日
0 收藏 823 点赞 327 浏览 2940 个字

首先声明,文章系个人原创 ,欢迎转载,转载请注明出处。

对于maven,有大神曾说过:如果你爱他,就请让他用Maven,因为那里是天堂,如果你恨他,就请让他用Maven,因为那里是地狱。尤其是maven+git+intellij idea的黄金搭档确实是一绝。虽然初次接触maven是在2年前并在工作中应用了半年左右,但并没有过多深入的接触,之前用的主要是ant,随着对maven的逐渐了解,在使用过程中确实深刻感受到了这句话的哲理性和准确性。

言归正传,本文主要介绍本人在工作中用到的系列问题以及相应的解决方案,并从中遴选出个人目前认为最实用最有价值的3个小技巧,暂且称为top3 MVQ(Most Valuable Question)吧,既算记录个人的技术积累历程,也希望能帮助有需要的同志。(嗯,一定是王者农药玩多了,老想着MVP,至于是否真的最实用最有价值,纯粹是为了好玩点,看了后印象深刻点,各位看官不喜勿碰哈)

1、怎样使用maven命令将第三方jar包部署到maven本地仓库和远程仓库?

有时候,我们需要引入一个第三方jar包,但是发现私服库中没有这个jar包,怎么办?这就可以使用maven命令将该jar包不熟到本地仓库中,这样项目的pom文件中添加相应的依赖就行了。

部署到本地仓库命令:

    mvn install:install-file -Dfile=D:\\commons-lang.2.6.jar -DgroupId=com.dafy -DartificalId=commons-lang -Dversion=1.0.0 -Dpackaging=jar

这个命令很好理解,mvn install:install-file就是执行maven的install命令,install的内容是个文件,-Dfile指明文件所在的位置,-DgroupId和-DartificalId是指明该文件在本地仓库的位置,也就是坐标,-Dversion是版本信息,-Dpacking=jar指明要打包的是个jar文件。

部署到远程仓库命令:

mvn deploy:deploy-file -DgroupId=com.test -DartifactId=service-api -Dversion=2.5.0-SNAPSHOT -Dpacckaging=jar -Dfile=service-api-2.5.0-SNAPSHOT.jar -DrepositoryId=snapshots -Durl=http://www.hello.com:8787/archiva/repository/snapshots

这个命令也很好理解,基本参数也都差不多,就不再解释了。

2、pom文件中pluginManagement属性和plugins有什么区别?类似的,dependencyManagement和Dependencies有什么区别?

在pom.xml文件中,经常会看到类似下面这种代码:

 <pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.5.RELEASE</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>

那么,pluginManagement和plugins到底有什么区别呢?为什么要这么写呢?这么写有什么用呢?

其实,pluginManagement只是一种插件声明(类似变量声明),但是不在plugins里(第10行开始里的)使用的话,是不会被maven加载执行的。这样主要是为了统一对插件进行管理,因为maven项目通常有很多模块,各个模块之间可能有继承和依赖关系,如果在父pom里声明了,在子pom里直接使用类似第11~14行代码就可以使用这个插件了。注意红色内容(重点来了):pluginManagement是不会被继承的,子pom.xml中必须声明才会有效,而不是有了父子关系就能在子模块中生效。简单来说,pluginManagement的2个特效就是:①声明但不执行。②不能继承

说了pluginManagement,再说plugins就好理解了,maven会调用plugins节点里的插件并执行,因此,如果需要使用某个maven插件,就必须放在plugins里。类似的还有dependencyManagement和Dependencies也可以这么理解。

3、怎样使用maven将项目打成可执行jar包?

项目开发完成后,通常需要将项目打包成可执行jar包或者ZIP格式的包,那么maven怎么做呢?强大的maven插件让这一切都变得很简单。假如有个springboot项目,需要打包成可执行jar包,可以使用spring-boot-maven-plugin插件,直接将下面的代码加入到pom.xml文件中的plugins节点下就行了:

 <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.5.RELEASE</version>
<configuration>
<mainClass>${start-class}</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>

看到没,只需加上spring-boot-maven-plugin就可以了,是不是既简单又强大?mainClass指明启动类,也就项目main函数所在的类,goal节点指明目标是repackage。其实,spring-boot-maven-plugin的工作过程是首先调用maven-jar-plugin插件,将项目打包成jar包,但是这个jar包是不包含依赖的jar包的,所以再执行repackage再打包命令,将所依赖的jar等等都加入到新的jar包中,这个包就是最终可以通过java -jar的可执行jar包,而原来的jar包会被重命名为.original的jar包。如下:

maven系列小技巧之Top3 MVQ(most valuable question)

maven系列小技巧之Top3 MVQ(most valuable question)

总的来说,spring-boot-maven-plugin可以看作maven-jar-plugin的升级版,通过这简单的几行代码就达到我们的目的了

总结下,本文主要介绍了几个maven使用过程中的简单使用的小技巧,至于对各位来说是否真的是mvq不要较真哈,看看就好,如有错误和建议,也欢迎提出指正~

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289