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

posted @ 2020-04-28 17:21  gsluofu  阅读(304)  评论(0编辑  收藏  举报