1、普通maven项目(非SpringBoot项目)需要用到的maven插件有:
maven的编译插件:
maven项目会用maven-compiler-plugin默认的jdk版本来进行jar编译,如果不指明版本就容易出现版本不匹配的问题,可能导致编译不通过的问题。解决办法:在pom文件中配置maven-compiler-plugin插件(以jdk1.8)。
1、方式一,指定maven.compiler.source的配置信息:<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
2、方式二,直接安装指定的plugin插件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
2、maven的打jar包插件:
1、:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <!-- 指定入口main方法类 --> <mainClass>com.yh.main.XX</mainClass> <!-- 是否添加依赖的jar路径配置 --> <addClasspath>true</addClasspath> <!-- 依赖的jar包存放位置,和生成的jar放在同一级目录下 --> <classpathPrefix>lib/</classpathPrefix> </manifest> </archive> </configuration> </plugin> </plugins> </build>
2-1、pom文件继承自 spring-boot-starter-parent 的parent节点,则直接:
<properties> <-- 指向main启动类 --> <start-class>com.main.xx</start-class> </properties>
2-2、第二种,pom文件不是继承自spring-boot-starter-parent,则:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.5.RELEASE</version> <configuration> <-- 指向main方法类 --> <mainClass>com.main.xx</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3、exclusion 标签解释:
举例说明: 比如dubbo框架也包含了spring-content、spring-beans、spring-web 这些依赖,假如本身项目的<dependencys>标签中就已经存有spring-content、spring-beans、spring-web这些依赖信息,为避免冲突,可在标签<dependency>中使用<exclusion>来排除依赖冲突项:
使用标签前:
使用标签后:
4、dependencyManagement 标签解释:
举例说明: <dependencyManagement> 主要用来维护版本号,可以避免jar版本的冲突,比如Spring Cloud 下面又很多子项目:feign hystrix eureka 等,引入这些子项目依赖可不写版本号(依赖中不必写:<version>标签)而交给SpringCloud进行版本管理:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
【注意:Spring Cloud 版本依赖 Spring Boot版本,可通过 https://blog.csdn.net/qq32933432/article/details/89375630 进行查询匹配版本】