【Java 从 0 到架构师】Maven
Java 从 0 到架构师目录:【Java从0到架构师】学习记录
=================================================================================
Tomcat 部署项目的方式有 4 种:
将 web 项目整个文件夹,放在
%TOMCAT_HOME%/webapps
目录中,文件夹名作为 ContextPath将 web 项目打包成 war,放在
%TOMCAT_HOME%/webapps
目录中,war 文件名作为 ContextPath在
%TOMCAT-HOME%/conf/server.xml
的 Host 标签中添加以下内容(ContextPath 是 path 属性值)
<Context docBase="项目路径" path="/xxx" />
在
%TOMCAT_HOME%/conf/Catalina/localhost
中新建一个 xml 文件,xml 文件名作为 ContextPath
<Context docBase="项目路径"/>
===================================================================================
传统开发中的常见痛点:
jar 包的下载、升级、依赖、冲突
不同 IDE 之间的项目共享
单元测试
打包发布
传统项目 vs Maven 项目:
========================================================================
Apache Maven,主要用于自动化构建和管理 Java 项目
基于 项目对象模型(POM,Project Object Model ) 的概念
必须配置好 JAVA_HOME,Maven 对 JDK 版本的要求:https://maven.apache.org/docs/history.html
添加 MAVEN_HOME\bin 到 PATH 中:
Maven 仓库查询:
Maven 使用 “约定优于配置” 的思想 (Convention over Configuration)
创建 Maven 项目时,Maven 将创建默认项目结构,开发人员只需要相应地放置文件
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 生命周期由下表中的 phase 组成:
使用命令 mvn package
就会按顺序执行 validate、compile、test、package 这几个阶段
mvn archetype:generate
:创建 Maven 项目
mvn clean
:清楚 target
mvn clean package
:先执行 clean,再执行 package
compile:默认。编译依赖关系在所有类路径中均可用。此外,这些依赖项会传递到相关项目
provided:仅在编译和测试类路径上可用,并且不可传递。希望 JDK 或容器在运行时提供它
runtime:依赖关系不是编译所必需,而是运行所必需的。它在运行时和测试类路径中,但不在编译类路径中
test:依赖关系对于正常使用该应用程序不是必需的,并且仅在测试编译和执行阶段可用。它不是可传递的
system:必须显式提供 jar 的位置(可以通过 systemPath
标签指定),不会去 Maven 仓库中查找
=============================================================================
先配置 JAVA_HOME,然后配置 MAVEN_HOME,添加 %MAVEN_HOME%/bin 到 PATH 中
![在这里插入图片描述](https://img-blog.csdnimg.cn/f76877af53fb4cc7a1a2d7d3ec1b85ef.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naG
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>
方法 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>
方法 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
选择 pom.xml 进行导入
方法 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>
评论