1.父模块的<packaging > 标签必须设置为 pom,父模块不编译
2.父模块用<dependencys>标签,会导致子模块继承所有依赖,所以尽量用dependencyManagement来管理版本,子模块声明即可,只有声明才会引入,不用加版本,如果有版本,以子模块为准。
3.单元测试plugin:maven-surefire-plugin,需要使用 3.0.X+
引入方法:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
4.预编译标签:<annotationProcessorPaths>
用法:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> <path> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${mapstruct.version}</version> </path> </annotationProcessorPaths> </configuration> </plugin>
5.maven定义远程仓库地址
用法:
<repositories> <repository> <id>aliyunmaven</id> <name>aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories>
6.打jar插件:spring-boot-maven-plugin,打war包用maven-war-plugin
用法:
<!-- 设置构建的 jar 包名 --> <finalName>${project.artifactId}</finalName> <plugins> <!-- 打包 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.6.7</version> <!-- 如果 spring.boot.version 版本修改,则这里也要跟着修改 --> <configuration> <fork>true</fork> </configuration> <executions> <execution> <goals> <goal>repackage</goal> <!-- 将引入的 jar 打入其中 --> </goals> </execution> </executions> </plugin> </plugins>
7.整体依赖结构:
(1)父模块依赖公共包(工具类、数据库连接等),负责版本管理
(2)启动服务模块依赖框架、业务模块(自主开发)
(3)框架模块(redis、mq等)
(4)业务模块单独开发,需要依赖的框架模块