0
点赞
收藏
分享

微信扫一扫

Maven基础知识

SDKB英文 2022-02-11 阅读 45

原来项目的痛点(流程化控制问题)

  • 软件的测试,文档生成,打包,发布——最好自动化(一键发布)
  • 项目依赖大量第三方的jar包, 依赖关系复杂,不好管理——pom.xml
  • jar 是不同的厂商,下载源太多——仓库
  • 模块依赖

概述

  • Maven is a software project management and comprehension tool
  • 软件工程管理工具
  • maven官网
    在这里插入图片描述

安装+配置

  • 下载
    在这里插入图片描述
    在这里插入图片描述
  • 解压刚下载的压缩包
  • 配置环境变量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

构架项目——Hello为例

  • 约定重于配置——有其特有的目录结构

1.默认配置

  • 手动创建目录结构
    在这里插入图片描述
pom.xml内容:
	<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	 
	  <modelVersion>4.0.0</modelVersion>
	  <!-- 坐标 : 此项目在仓库中的位置 -->
	  <groupId>com.yc.test</groupId>
	  <artifactId>my-app</artifactId>
	  <version>1.0-SNAPSHOT</version>
	 
	  <name>my-app</name>
	</project>
  • 测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2.测试各种goal

  • 不同的命令会自动下载不同的插件,maven是以插件形式运行起来的
  • mvn clean:清空输出目录,即删除target目录
  • mvn compile:编译,即生成target目录
  • mvn test:测试
  • mvn package:打包成jar文件,放在target目录下
  • mvn install:将jar包复制一份到本地仓库中
  • mvn deploy:将jar装到私服
  • mvn build

3.将仓库从用户目录改成自定义目录

  • 效果
    在这里插入图片描述
  • 配置
    在这里插入图片描述
    本地仓库下载地址 提取码:tjim
setting.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
	
	<!-- 本地仓库位置-->
	<localRepository>D:\MavenRepository</localRepository>

	<pluginGroups>
	</pluginGroups>

	<proxies>
		<!--  代理服务器配置 :   
		               默认情况,我们使用  apache提供的maven仓库 (中央仓库),  但这个仓库有时候不稳定, 
					   可以在这里多配置几个代理服务器当中央仓库不行时,从代理服务器下载.   -->
	</proxies>

	<!--  配置  仓库所在的服务器( 私服   nexus )登录用户名和密码  -->
	<servers>
	    <!--
		<server>
			<id>nexus-releases</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
		<server>
			<id>nexus-snapshots</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
		-->
	</servers>

	<!--    配置私服的地址,这样就不用到公服下载jar包,而是在私服下,私服没有,由私服到公服下载.   -->
	<mirrors>
	    
		
	</mirrors>

	<profiles>
	
		<profile>
			<id>dev</id>
			<repositories>
				<repository>
					<id>aliyun</id>
					<url>http://maven.aliyun.com/nexus/content/groups/public</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</repository>
				<repository>
					<id>central</id>
					<url>http://central.maven.org/maven2/</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</repository>
				<repository>
					<id>clojars</id>
					<name>clojars</name>
					<url>http://clojars.org/repo/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>
				<repository>
					<id>redhat</id>
					<name>redhat</name>
					<url>https://maven.repository.redhat.com/ga/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>

			</repositories>

			<pluginRepositories>
				<pluginRepository>
					<id>aliyun</id>
					<url>http://maven.aliyun.com/nexus/content/groups/public</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</pluginRepository>
				<pluginRepository>
					<id>central</id>
					<url>http://central.maven.org/maven2/</url>
					<releases>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</releases>
					<snapshots>
						<enabled>true</enabled>
						<updatePolicy>always</updatePolicy>
					</snapshots>
				</pluginRepository>
				<pluginRepository>
					<id>clojars</id>
					<name>clojars</name>
					<url>http://clojars.org/repo/</url>
					<releases>
						<enabled>true</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</pluginRepository>

			</pluginRepositories>
		</profile>
		

		<profile>
			<!-- 配置 maven使用的jdk版本,因为如果不配置,自动采用 jdk1.4, 就样插件就会下载  基于jdk1.4的插件,运行报错  -->
			<id>jdk1.8</id>
			<activation>
				<activeByDefault>true</activeByDefault>
				<jdk>1.8</jdk>
			</activation>
			<properties>
				<maven.compiler.source>1.8</maven.compiler.source>
				<maven.compiler.target>1.8</maven.compiler.target>
				<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
			</properties>
		</profile>
	</profiles>
	<activeProfiles>
		<activeProfile>dev</activeProfile>
		<activeProfile>jdk1.8</activeProfile>
	</activeProfiles>
</settings>

术语

1.仓库

  • 中央仓库
  • 私服:镜像仓库(自己搭建)——nexus
  • 本地仓库

2.配置文件的级别

  • 最高:只对当前项目起作用,例项目中的pom.xml
  • 中级:只对当前用户起作用,例${user.home}/.m2/settings.xml
  • 低级:对使用当前maven的项目起作用,例maven的安装包下conf/settings.xml

3.settings.xml配置

  • localRepository: 本地仓库的位置
  • mirror
  • repository
  • 代理
  • jdk版本

4.maven常用的goal

  • 不同的命令会自动下载不同的插件,maven是以插件形式运行起来的
  • mvn clean:清空输出目录,即删除target目录
  • mvn compile:编译,即生成target目录
  • mvn test:测试
  • mvn package:打包成jar文件,放在target目录下
  • mvn install:将jar包复制一份到本地仓库中
  • mvn deploy:将jar装到私服
  • mvn build

5.生命周期

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作
pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上一次构建生成的文件
post-clean:执行一些需要在clean之后立刻完成的工作
  • Default Lifecycle 构建的核心部分,编译,测试,打包,部署等
  • Site Lifecycle 生成项目报告,站点,发布站点

6.依赖范围

在这里插入图片描述

结合IDEA使用

1.修改配置

在这里插入图片描述
在这里插入图片描述

2.创建Maven项目

在这里插入图片描述

3.发布到target目录

在这里插入图片描述

4.引入junit依赖

在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论