写点什么

【Java 从 0 到架构师】Maven

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:3146 字

    阅读完需:约 10 分钟


Java 从 0 到架构师目录:【Java从0到架构师】学习记录


Tomcat 部署项目的方式


=================================================================================


Tomcat 部署项目的方式有 4 种:


  1. 将 web 项目整个文件夹,放在 %TOMCAT_HOME%/webapps 目录中,文件夹名作为 ContextPath

  2. 将 web 项目打包成 war,放在 %TOMCAT_HOME%/webapps 目录中,war 文件名作为 ContextPath

  3. %TOMCAT-HOME%/conf/server.xml 的 Host 标签中添加以下内容(ContextPath 是 path 属性值)


<Context docBase="项目路径" path="/xxx" />


  1. %TOMCAT_HOME%/conf/Catalina/localhost 中新建一个 xml 文件,xml 文件名作为 ContextPath


<Context docBase="项目路径"/>


传统项目 vs Maven 项目


===================================================================================


传统开发中的常见痛点:


  • jar 包的下载、升级、依赖、冲突

  • 不同 IDE 之间的项目共享

  • 单元测试

  • 打包发布


传统项目 vs Maven 项目:



Maven


========================================================================


Apache Maven,主要用于自动化构建和管理 Java 项目



必须配置好 JAVA_HOME,Maven 对 JDK 版本的要求:https://maven.apache.org/docs/history.html


添加 MAVEN_HOME\bin 到 PATH 中:



Maven 仓库查询:



Maven 项目的常见目录




Maven 使用 “约定优于配置” 的思想 (Convention over Configuration)


  • 创建 Maven 项目时,Maven 将创建默认项目结构,开发人员只需要相应地放置文件



pom.xml




pom.xml 是 Maven 项目的核心配置文件,根元素是 project。project 的常用子元素如下表所示:



groupId、artifactId、version 组成一个 Maven 坐标 (Coordinate),能够唯一的确定一个项目


构建生命周期




构建生命周期,描述了构建的过程。Maven 内置了 3 个构建生命周期:


  • clean(清理)

  • default(默认,重点关注)

  • site(站点)


构建生命周期由 phase(阶段)组成


  • phase 可以跟 plugin goal(插件目标)绑定

  • plugin goal 代表 1 个特定的任务

  • 一旦某个 phase 被执行,就会执行其绑定的所有 goal



通过命令 mvn 插件:help 可以查看插件包含的所有 goal


  • 比如 mvn archetype:help


default 生命周期




default 生命周期由下表中的 phase 组成:



使用命令 mvn package 就会按顺序执行 validate、compile、test、package 这几个阶段


常用命令




mvn archetype:generate:创建 Maven 项目


mvn clean:清楚 target


mvn clean package:先执行 clean,再执行 package


dependency 中 scope 的取值




compile默认。编译依赖关系在所有类路径中均可用。此外,这些依赖项会传递到相关项目


provided:仅在编译和测试类路径上可用,并且不可传递。希望 JDK 或容器在运行时提供它


runtime:依赖关系不是编译所必需,而是运行所必需的。它在运行时和测试类路径中,但不在编译类路径中


test:依赖关系对于正常使用该应用程序不是必需的,并且仅在测试编译和执行阶段可用。它不是可传递的


system:必须显式提供 jar 的位置(可以通过 systemPath 标签指定),不会去 Maven 仓库中查找


Maven 常见操作


=============================================================================


初始化配置:环境变量、仓库位置、配置镜像




先配置 JAVA_HOME,然后配置 MAVEN_HOME,添加 %MAVEN_HOME%/bin 到 PATH 中


![在这里插入图片描述](https://img-blog.csdnimg.cn/f76877af53fb4cc7a1a2d7d3ec1b85ef.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naG


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


VpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_1,color_FFFFFF,t_70)




修改仓库位置:在 %MAVEN_HOME%/conf/settings.xml<settings> 标签中添加 1 个 <localRepository>


<localRepository>F:\Dev\Java.m2\repository</localRepository>




提高仓库的下载速度:在 %MAVEN_HOME%/conf/settings.xml<mirrors> 标签中添加 1 个 <mirror>


<mirror>


<id>aliyun</id>


<name>aliyun</name>


<url>https://maven.aliyun.com/repository/public</url>


<mirrorOf>central</mirrorOf>


</mirror>


修改 Maven 的 JDK 版本




方法 1:在 pom.xml 中添加属性(每个 Maven 项目都要添加)


<properties>


<maven.compiler.source>14</maven.compiler.source>


<maven.compiler.target>14</maven.compiler.target>


<maven.compiler.compilerVersion>14</maven.compiler.compilerVersion>


</properties>


方法 2:在 pom.xml 中添加插件(每个 Maven 项目都要添加)


<plugin>


<groupId>org.apache.maven.plugins</groupId>


<artifactId>maven-compiler-plugin</artifactId>


<version>3.8.1</version>


<configuration>


<source>14</source>


<target>14</target>


</configuration>


</plugin>


方法 3:在 %MAVEN_HOME%/conf/settings.xml<profiles> 标签中添加 1 个 <profile>


这是一种一劳永逸的办法,不需要去修改每一个 Maven 项目的 pom.xml,但其他人可能无法运行该项目


<profile>


<id>jdk14</id>


<activation>


<activeByDefault>true</activeByDefault>


<jdk>14</jdk>


</activation>


<properties>


<maven.compiler.source>14</maven.compiler.source>


<maven.compiler.target>14</maven.compiler.target>


<maven.compiler.compilerVersion>14</maven.compiler.compilerVersion>


</properties>


</profile>


命令行新建 Maven 项目




方法 1


  • 在命令行输入:mvn archetype:generate,会让我们选择项目类型

  • 默认值是 7, maven-archetype-quickstart,是一个普通的 Java 项目

  • 如果希望创建一个 web 项目,输入 10, maven-archetype-webapp



输入 groupId、artifactId、version、package


如果希望 version、package 使用默认值,直接敲回车即可



最后输入 y 表示确认,项目就创建完毕了



方法 2:用命令行配置好创建项目的各种参数


mvn archetype:generate -DgroupId=com.mj.maven -DartifactId=helloworld -Dversion=1.0-RELEASE -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart


IDEA 导入 Maven 项目




选择 pom.xml 进行导入


IDEA 新建 Maven 项目(Web 项目)







生成 Runnable Jar




方法 1:maven-jar-plugin


<plugin>


<groupId>org.apache.maven.plugins</groupId>


<artifactId>maven-jar-plugin</artifactId>


<version>3.0.2</version>


<configuration>


<archive>


<manifest>


<addClasspath>true</addClasspath>


<classpathPrefix>lib</classpathPrefix>


<mainClass>主类</mainClass>


</manifest>


</archive>


<finalName>jar 的文件名</finalName>


</configuration>


</plugin>


<plugin>


<groupId>org.apache.maven.plugins</groupId>


<artifactId>maven-dependency-plugin</artifactId>


<version>3.1.2</version>


<executions>


<execution>


<goals>


<goal>copy-dependencies</goal>


</goals>


<configuration>


<outputDirectory>${project.build.directory}/lib</outputDirectory>


</configuration>


</execution>


</executions>


</plugin>


方法 2:maven-assembly-plugin


<plugin>


<groupId>org.apache.maven.plugins</groupId>


<artifactId>maven-assembly-plugin</artifactId>


<version>3.3.0</version>

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
【Java从0到架构师】Maven