Maven
Maven是跨平台的项目管理工具。主要服务基于Java平台的项目构建,依赖管理和项目信息管理。一键部署(清理--->编译--->测试--->报告--->打包--->部署)自动下载,统一依赖管理,仓库管理
Maven坐标主要组成:
*groupId:定义当前Maven项目隶属项目
*artifactId:定义实际项目中的一个模块
*version:定义当前项目的当前版本
*packaging:定义该项目的打包方式
groupId(.替换/) 和 artifactld、version 共同组成jar包文件路径,artifactld、version构成默认jar包名称
继承是为了消除重复,可以把pom中很多相同的配置提取出来,如:groupId,version等。在使用的时候,子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的依赖版本问题。
聚合工程的作用:如果想一次构建多个项目模块,那则需要对多个项目模块进行聚合
<modules>
<module>子项目名称1</module>
<module>子项目名称2</module>
<module>子项目名称3</module>
</modules>
远程仓库 :
如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。
Maven 依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
*步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
*步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
*步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
*步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
Maven 阿里云(Aliyun)仓库
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下:
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
第二步: pom.xml文件里添加:
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Maven插件
Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的,每个插件都能实现多个功能,每个功能就是一个插件目标。Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任
务。例如:compile就是插件maven-compiler-plugin的一个插件目标或者tomcat插件。
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>1111</port>
<path>/</path>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
Maven私服
1、私服的好处
缓存Maven中央仓库的jar包,这样不需要每次本地仓库没有jar包而不必到中央仓库下载,而是到私服下载。
解决公司无法上网,而又要连接中央仓库的问题。只要连接私服,确保私服可以连接到中央仓库。
方便公司内部不同团队或者项目共享jar包,需要共享jar包,可以上传到私服,通过私服共享。
Nexus安装与仓库概念
Nexus下载地址:https://www.sonatype.com/nexus-repository-oss
安装
解压文件
启动服务 nexus.exe /run (启动成功后不要关闭命令行窗口)
安装服务 nexus.exe /install (重新使用新的命令行安装,可能出现权限不足,请以管理员身份运行命令行)
启动服务 net start nexus
停止服务 net stop nexus
访问页面 http://localhost:8081/
初始登录用户名和密码:admin/admin123
3、从Nexus私服下载资源
找到maven配置文件settings.xml,添加如下配置
1)添加镜像配置,将所有访问外网仓库的请求指向私服
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
2)添加profiles,所有请求均通过镜像
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo1.maven.org/maven2</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
3)生效配置
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
4、上传资源到Nexus私服
1、在pom.xml中配置,上传资源到nexus
<distributionManagement>
<repository>
<id>release</id>
<name>Internal Release</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Internal Snapshots</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
2、在maven的配置文件中配置上传权限
<server>
<id>release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>deployment</username>
<password>deployment123</password>
</server>
参考: link