Maven

Maven,第1张

Maven 概念

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

作用

Maven 的依赖管理

Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成 一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。

项目的一键构建

我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。
什么是构建?
指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个
过程称为构建。
一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。

存放jar包的坐标文件

Maven仓库

分类

  1. 本地仓库

用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,
优先从本地仓库查找

默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。
  1. 远程仓库

远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。

  1. 中央仓库

中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中 央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。

maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven 软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文 件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库 理解为缓存,有了本地仓库就不用每次从远程仓库下载了

仓库的示意图

修改Maven默认本地仓库地址

在maven项目目录下,打开cmd

在maven项目cmd输入命令

mvn compile

替换阿里云的镜像源

阿里云镜像源

<mirror>  
		  <id>alimavenid>  
		  <name>aliyun mavenname>  
		  <url>http://maven.aliyun.com/nexus/content/groups/public/url>
		  <mirrorOf>centralmirrorOf>          
mirror>
Maven工程 目录结构

作为一个 maven 工程,它的 src 目录和 pom.xml 是必备的。

进入 src 目录后,我们发现它里面的目录结构如下:

src/main/java —— 存放项目的.java 文件
src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置,编译后的 class 文件会输出到此目录
pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录。

运行

进入 maven 工程目录(当前目录有 pom.xml 文件),运行 tomcat:run 命令

根据上边的提示信息,通过浏览器访问:http://localhost:8080/maven-helloworld/

Maven命令 compile

compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target 目录下。

首先进入项目的根目录,cmd 进入命令状态,执行 mvn compile,

test

test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。 cmd 执行 mvn test 执行 src/test/java 下单元测试类,

clean

clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。

package

package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war 包。

install

install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库

Maven指令的生命周期

同一套生命周期,执行后边 *** 作,会自动执行前边所有的 *** 作

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle 生成项目报告,站点,发布站点。

idea maven maven坐标

去本地仓库去寻找jar包

idea的maven配置
  1. 打开 File Settings 配置 maven

  2. idea 中创建一个 maven 的 web 工程

  3. 选择 idea 提供好的 maven 的web 工程模板

​ 3.1这里也可以选择不勾选工程模版创建项目,这时候会出现缺少一些文件夹


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>
    
    <groupId>com.hansergroupId>
    <artifactId>maven_java_1artifactId>
    <version>1.0-SNAPSHOTversion>
    
    <packaging>jarpackaging>

    <properties>
        <maven.compiler.source>11maven.compiler.source>
        <maven.compiler.target>11maven.compiler.target>
    properties>

project>

最终目录结构不完整,需要手动补齐

​ 3.2 选择 idea 提供好的 maven 的web 工程模板

​ 3.3 选择java项目的 骨架/工程模版

  1. 点击 Next 填写项目信息

5 点击 Next,此处不做改动

6 点击 Next 选择项目所在目录

7 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面

8 手动添加 src/main/java 目录,如下图右键 main 文件夹 New Directory

9 创建一个新的文件夹命名为 java

10 点击 OK 后,在新的文件夹 java 上右键 Make Directory as Sources Root

创建一个 Servlet

要解决问题,就是要将 servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet 的坐标,从而 导入它的 jar

Maven坐标 导入依赖的jar包

在对应的Maven模块中,使用依赖导入对应的jar包


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.hansergroupId>
    <artifactId>maven_java_2artifactId>
    <version>1.0-SNAPSHOTversion>

    <properties>
        <maven.compiler.source>11maven.compiler.source>
        <maven.compiler.target>11maven.compiler.target>
    properties>
    
    <dependencies>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.11version>
            <scope>testscope>
        dependency>
    dependencies>

project>

导入jar包后的 *** 作

在 pom.xml 文件添加坐标

直接打开 hello_maven 工程的 pom.xml 文件,再添加坐标

添加 jar 包的坐标时,还可以指定这个 jar 包将来的作用范围。
每个 maven 工程都需要定义本工程的坐标,坐标是 maven 对 jar 包的身份定义,比如:入门程序的
坐标定义如下:
<!--项目名称,定义为组织名+项目名,类似包名-->
<groupId>com.itheima</groupId>
<!-- 模块名称 -->
<artifactId>hello_maven</artifactId>
<!-- 当前项目版本号,snapshot 为快照版本即非正式版本,release 为正式发布版本 -->
    
<version>0.0.1-SNAPSHOT</version>
<packaging > :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom

坐标的来源方式

添加依赖需要指定依赖 jar 包的坐标,但是很多情况我们是不知道 jar 包的的坐标,可以通过如下方式查询:

项目中添加的坐标

Maven插件 设置 jdk 编译版本

本教程使用 jdk1.8,需要设置编译版本为 1.8,这里需要使用 maven 的插件来设置: 在 pom.xml 中加入:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
    

这里可以使用idea中的快捷键 alt + insert 导入依赖和插件

Maven web项目

不使用骨架的方式导入jar包

1 设置打包方式为war

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hanser</groupId>
    <artifactId>maven_web_2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <!--tomcat插件 启动当前web应用-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>80</port>
                    <path>/day23</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>
    
    

</project>

可以使用run -> Edit Configuration 设置快捷运行tomcat插件的方式

依赖范围

配置的jar对那些环境是有效的

scope

<scope>provided</scope>

注意

如果容器中(Tomcat)带有jar包,在导入jar包的时候没有配置 provided 的时候 会造成jar包冲突,原因是因为Tomcat中也是存在jar包的 然后在打包的时候会把 导入的jar也打进去,这样就冲突了。

编写 servlet

在 src/main/java 中创建 ServletTest

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

也可以直接点击如图按钮,手动输入 tomc7:run 命令运行项目

点击后d出如下图窗口

运行结果

maven工程运行调试 端口占用处理

重新执行 tomcat:run 命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:

断点调试

点击如图所示选项

在d出窗口中填写如下信息

完成后先 Apply 再 OK 结束配置后,可以在主界面找到我们刚才配置的 *** 作名称

如上图红框选中的两个按钮,左侧是正常启动,右侧是 debug 启动。

总结 常用的 maven 命令

常用 的 maven 命令包括: compile:编译 clean:清理 test:测试 package:打包 install:安装

坐标定义
在 pom.xml 中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:

<groupId>cn.itcast.mavengroupId>

<artifactId>maven-firstartifactId>

<version>0.0.1-SNAPSHOTversion>
<packaging > :打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom
pom 基本配置
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
<project > :文件的根节点 .
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 . 
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。 
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等

0.0.1-SNAPSHOT
:打包类型
jar:执行 package 会打成 jar 包
war:执行 package 会打成 war 包
pom :用于 maven 工程的继承,通常父工程设置为 pom


### pom 基本配置

```html
pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
 :文件的根节点 .
 : pom.xml 使用的对象模型版本
 :项目名称,一般写项目的域名
 :模块名称,子项目名或模块名称
 :产品的版本号 . 
 :打包类型,一般有 jar、war、pom 等
 :项目的显示名,常用于 Maven 生成的文档。 
 :项目描述,常用于 Maven 生成的文档
 :项目依赖构件配置,配置项目依赖构件的坐标
 :项目构建配置,配置编译、运行插件等

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/870771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存