Fork me on GitHub

Maven 基础

Maven简介

Maven 是一个项目管理工具,它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

简而言之:依赖管理以及项目生命周期管理

操作系统安装Maven

1:下载Maven:
Apache-maven-3.5.2 下载地址:http://archive.apache.org/dist/maven/maven-3/

2:JDK准备
Maven依赖于JDK,需要JDK1.7版本以上,JDK安装参考
https://www.cnblogs.com/xiaofengshan/p/14924454.html

3:Maven环境变量配置

  • MAVEN_HOME:F:\software\apache-maven-3.6.1(Maven路径);
  • Path:%MAVEN_HOME%\bin.

4:检查Maven是否安装完成
打开cmd窗口,输入mvn -v命令,
image
我们发现 maven 的版本,及 jdk 的版本符合要求,这样我们的 maven 软件安装就成功了。

Maven 仓库的分类

  • 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,
    优先从本地仓库查找;
    默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。
  • 远程仓库(私服):如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。
    远程仓库可以在互联网内也可以在局域网内。
  • 中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包含了世界上大部分流行的开源项目构件。

将本地jar包打包到本地仓库和上传到私服

  • 本地jar打包到本地仓库

    • mvn install:install-file -Dfile=jar包完整地址或相对地址 -DgroupId=自定义的groupID -DartifactId=自定义的artifactid -Dversion=自定义版本号 -Dpackaging=jar
      如:mvn install:install-file -Dfile=commons-codec-1.9.jar -DgroupId=commons.codec -DartifactId=commons-codec -Dversion=0.0.1 -Dpackaging=jar

      如果上传时报错找不到pom文件,这是由于不同操作系统导致,可以将上面的命令参数加上引号,如下

      mvn install:install-file "-Dfile=jar包完整地址或相对地址" "-DgroupId=自定义的groupID" "-DartifactId=自定义的artifactid" "-Dversion=自定义版本号" "-Dpackaging=jar"

  • 本地jar上传到私服

    • 可以登录私服,导入jar

    • 也可以使用命令上传

      • mvn deploy:deploy-file -Dfile=jar包 -DgroupId=groupID -DartifactId=artifacid -Dversion=版本号 -Dpackaging=jar -Durl=http://ip:port/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty

报错,则看 https://www.cnblogs.com/xiaofengshan/p/15996988.html

  • 使用命令从私服中获取jar包
    • mvn dependency:get -DremoteRepositories=http://192.168.200.39:888/repository/maven-public/ -DgroupId=org.apache.logging.log4j -DartifactId=log4j-slf4j-impl -Dversion=2.12.1

Maven的settings.xml(配置文件)配置

相关概念

  • 全局 setting
    在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有 project项目,它作为 maven 的全局配置。

  • 用户 setting
    如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml 文件默认的位置在:
    ${user.dir}/.m2/settings.xml 目录中,${user.dir} 指 windows 中的用户目录。

maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。

Maven相关配置

  • conf/setting.xml 文件配置
    • <localRepository/>:建构系统本地仓库的路径,不设置的话默认是在{user.home}/.m2/repository/下,如果想要系统所有用户共用一个本地仓库,则可以在maven安装目录下的setting.xml中进行设置
    • Servers:配置私服的信息是在pom文件中,但是认证信息则是在setting.xml中,这是因为pom文件往往是被提交到代码仓库中供所有成员访问的,而setting.xml是存放在本地的,这样是安全的.
      jar包查找先到本地仓库查找,找不到去私服查找,私服没有,私服去中央仓库下载到私服,然后再下载到本地。
        <mirror>
		 <id>YxNexus</id>
		<name>YX Maven</name>
		<url>http://192.168.200.39:888/repository/maven-public/</url>
		<mirrorOf>central</mirrorOf>
	</mirror>
	
	<localRepository>F:\Apache\repository-local\repository</localRepository>
	
  • 阿里云仓库
 <mirror>  
      <id>alimaven</id>  
      <name>aliyun maven</name>  
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
      <mirrorOf>central</mirrorOf>          
    </mirror>

参考:https://www.cnblogs.com/qlqwjy/p/8643032.html https://blog.csdn.net/weixin_43002202/article/details/109450404

Maven项目的Pom设置

pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:

  • <project >:文件的根节点
  • <modelversion>: pom.xml 使用的对象模型版本
  • <groupId >:项目名称,一般写项目的域名
  • <artifactId>:模块名称,子项目名或模块名称
  • <version>:产品的版本号
  • <packaging>:打包类型,一般有 jar、war、pom 等
  • <name>:项目的显示名,常用于 Maven 生成的文档。
  • <description>:项目描述,常用于 Maven 生成的文档
  • <dependencies>:项目依赖构件配置,配置项目依赖构件的坐标
  • <build>:项目构建配置,配置编译、运行插件等。
三个常用插件
  • tomcat插件
           <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>

此时点击 idea 最右侧 Maven Projects,
就可以看到我们新添加的 tomcat7 插件
双击 tomcat7插件下 tomcat7:run 命令直接运行项目

  • maven编译的jdk版本插件
<plugin>                                                                                                                                                                                                  
    <groupId>org.apache.maven.plugins</groupId>                                                                                               
    <artifactId>maven-compiler-plugin</artifactId>                                                                                            
    <version>3.1</version>                                                                                                                    
    <configuration>                                                                                                                                          
        <source>1.8</source> <!-- 源代码使用的JDK版本 -->                                                                                             
        <target>1.8</target> <!-- 需要生成的目标class文件的编译版本 -->                                                                                     
        <encoding>UTF-8</encoding><!-- 字符集编码 -->
        <skipTests>true</skipTests><!-- 跳过测试 -->                                                                                          
    </configuration>                                                                                                                          
</plugin>
  • spring-boot,可执行jar插件
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.1.RELEASE</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Spring Boot Maven plugin的最主要goal就是repackage,其在Maven的package生命周期阶段,能够将mvn package生成的软件包,再次打包为可执行的软件包,并将mvn package生成的软件包重命名为*.original。

基于上述配置,对一个生成Jar软件包的项目执行如下命令
mvn package spring-boot:repackage

IDEA的Maven设置

image

IDEA创建Maven项目

添加配置 DarchetypeCatalog=internal,添加原因:每次创建maven项目时, IDEA 要使用插件进行创建,这些插件当你创建新的项目时,它每次都会去中央仓库下载,这样使得创建比较慢。所以在创建maven项目时,应该让它找本地仓库中的插件进行项目的创建。
image
参考:cnblogs.com/zzvar/articles/14596785.html

posted @ 2020-02-17 22:35  晨度  阅读(164)  评论(0编辑  收藏  举报