【Maven】超实用的Maven指南(超详细)

实战记录📝

Maven 指令大全 🌟

  • clean:清除由项目编译创建的target
  • validate:验证项目是否正确并且所有必要的信息均可用
  • compile:编译项目的源代码
  • test:使用合适的单元测试框架来测试编译的源代码,这些测试不应要求将代码打包或部署
  • verify:对集成测试的结果进行任何检查,以确保符合质量标准
  • package:完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
  • install:完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
  • deploy:完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
  • site:用于为Maven项目生成站点(用以生成HTML页面的模块等文档)
    :::tips
    package,install,deploy三者关联:
  1. mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
  2. mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
  3. mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段
    :::

找到没有被使用的jar(analyze)

Maven项目分析剔除无用jar引用
经常会出现项目打包要求内存多,时间慢的问题,如何分析项目中哪些依赖是有用的,哪些可以剔除的,一方面减轻打包内存占用多,时间慢的问题,另一方面照顾研发童鞋的强迫症问题(容不得半点无用jar包在我的项目里)

mvn dependency:analyze

查看pom.xml的依赖关系时,可以在IDEA上安装maven help插件,可以直观地看到各jar依赖关系

分析jar是被哪个maven引入(tree)🌟

Maven 项目查找 jar 包是由哪个依赖引入的_jakatar 依赖-CSDN博客

  • 查看jar包是哪个依赖引入的
mvn dependency:tree -Dverbose -Dincludes=要查询的内容(groupId:artifactId)

image.png

  • 结果分析:pagehelper-spring-boot-starter引入

image.png

dependencies(Maven依赖)

新建SpringBoot Maven项目中pom常用依赖配置及常用的依赖的介绍_pom依赖_代码匪徒的博客-CSDN博客

  • SpringBoot/Cloud 版本管理
    SpringBoot 版本管理

版本管理统一管理以下依赖:spring 本身的组件、各种 spring-boot-starter、以及其它第三方依赖(如:slf4j、redis)。包含了spring-boot-starter-web和spring-boot-starter…

<properties>
	<spring-boot.version>2.7.13</spring-boot.version>
</properties>

<!-- SpringBoot 依赖配置 -->
<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-dependencies</artifactId>
		<version>${spring-boot.version}</version>
		<type>pom</type>
		<scope>import</scope>
</dependency>

SpringCloud 版本管理

<properties>
	<spring-cloud.version>2021.0.8</spring-cloud.version>
</properties>

<!-- SpringCloud 微服务 -->
<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-dependencies</artifactId>
		<version>${spring-cloud.version}</version>
		<type>pom</type>
		<scope>import</scope>
</dependency>

SpringCloud Alibaba 版本管理

<properties>
	<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
</properties>

<!-- SpringCloud Alibaba 微服务 -->
<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-alibaba-dependencies</artifactId>
		<version>${spring-cloud-alibaba.version}</version>
		<type>pom</type>
		<scope>import</scope>
</dependency>
  • 连接数据库依赖
    mysql-connector-java
<!--连接数据库依赖-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>8.0.16</version>
</dependency>
  • 数据库连接池
    c3p0 连接池
<!--c3p0数据库连接池-->
<dependency>
	<groupId>com.mchange</groupId>
	<artifactId>c3p0</artifactId>
	<version>0.9.5.2</version>
</dependency>
  • Druid 连接池
<!--Druid-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.2.2</version>
</dependency>

<!--推荐,将Druid与SpringBoot进行整合-->
<!-- Druid Spring Boot 组件 -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.2.2</version>
</dependency>
  • 单元测试/lombok
    junit
<!--Junit单元测试-->
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
</dependency>

spring-boot-starter-test(包含在spring-boot-dependencies中)

<!--Spring Boot 测试-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
	<exclusions>
		<!--排除junit-->
		<exclusion>
			<groupId>org.junit.vintage</groupId>
			<artifactId>junit-vintage-engine</artifactId>
		</exclusion>
	</exclusions>
</dependency>
  • lombok🌟

@Data :直接可以省略了Get、Set方法
@Slf4j :不需要单独引入日志依赖和配置日志,直接 log.info( ) 打印日志

<!--lombok简化GetSet方法-->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.22</version>
</dependency>
  • Spring/MyBatis依赖
<!--spring-->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>5.1.9.RELEASE</version>
</dependency>

<!--Spring操作数据库的话,还需要一个spring-jdbc-->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>5.1.9.RELEASE</version>
</dependency>

mybatis(mybatis-spring)

<!--mybatis-->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.5.6</version>
</dependency>

<!--MyBatis-Spring-->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>2.0.2</version>
</dependency>

mybatis-plus配置

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>
  • Json解析库
    jackson(SpringBoot默认)
<!--jackson-databind数据捆绑包-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    
<!--jackson-annotations 注解包,提供标准注解功能-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.0</version>
</dependency>

fastjson(推荐!!!)

<!--alibaba的fastjson-->
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.60</version>
</dependency>
  • fastjson(jackson-databind、jackson-annotations)、aspectjrt(aspectjweaver)、log4j(log4j-core)
  • AOP依赖
    @AspectJ、@Pointcut、通知注解(如:@Before、@After等)、@Aspect和自定义注解
<!--Spring Boot Aop-->
<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  • 日志依赖
    log4j
<!--log4j-->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.1</version>
</dependency>

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
  • 参数校验
    支持的注解:@Max,@Min等
<!--Spring Validation-->
<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
  • 服务监控
<!--actuator监控导入-->
<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!---->

SpringBoot Admin可视化

<!-- Admin服务端 -->
	<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>2.3.1</version>
	</dependency>

<!-- Admin客户端 -->
	<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.3.1</version>
	</dependency>
  • 启动类上添加注解:
@EnableAdminServer
  • 项目热部署
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>
  • hutool工具包
<!--Hutool-->
<dependency>
		<groupId>cn.hutool</groupId>
		<artifactId>hutool-all</artifactId>
		<version>5.4.7</version>
</dependency>

build-resources(资源导入)

  • 静态资源导出配置
<!--在build中配置resources,来防止我们的资源导出失败问题-->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

build-plugins(Maven插件)

全面详解Maven的配置文件pom.xml(含常用plugin)-CSDN博客

profiles(Maven运行时环境)

profiles用于定义 Maven 运行时的不同配置环境,比如开发环境、测试环境、生产环境等,可以在不同的环境中使用不同的配置,比如我们做了如下配置

<profiles>
	<!--生产环境prod-->
	<profile>
		<id>prod</id>
		<activation>
			<!--true表示默认启用该profile-->
			<activeByDefault>true</activeByDefault>
		</activation>
		<build>
			<!--定义了maven-compiler-plugin插件的版本和为Java11设置编译器版本-->
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<release>11</release>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
	
	<!--开发环境dev-->
	<profile>
			<id>dev</id>
			<activation>
					<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
					<profilesActive>dev</profilesActive>
			</properties>
	</profile>
</profiles>
  • 激活特定profile
mvn clean install -Pprod

properties(JDK声明配置)

  • 声明JDK版本
<!--声明jdk版本-->
<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
  • 版本version管理
<properties>
	<spring-boot.version>2.7.13</spring-boot.version>
	<spring-cloud.version>2021.0.8</spring-cloud.version>
	<spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
</properties>
  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值