Maven 学习

  1. 安装 maven
  2. Maven 本地仓库的配置
  3. Maven 工程的目录结构
  4. Maven 常用命令
  5. pom.xml
    1. 依赖范围
  6. idea 开发 maven 项目
    1. 创建 Maven 项目速度慢问题
    2. 创建 Maven 项目

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

安装 maven

  • 配置 JAVA_HOME 的环境变量

  • 下载地址:https://maven.apache.org/download.cgi

  • 解压到一个没有中文没有空格的路径下

    • bin: 存放了 maven 的命令,比如 mvn
    • boot: 存放了一些 maven 本身的引导程序,如类加载器等
    • conf: 存放了 maven 的一些配置文件,如 setting.xml 文件
    • lib: 存放了 maven 本身运行所需的一些 jar 包
  • 在环境变量增加 M2_HOME,路径是 maven 解压后的根目录

  • 在环境变量里的 path 中增加 maven/bin 的目录

  • mvn -v 查看 maven 版本

      mvn -v
      Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
      Maven home: C:\maven\bin\..
      Java version: 1.8.0_171, vendor: Oracle Corporation
      Java home: C:\Program Files\Java\jdk1.8.0_171\jre
      Default locale: zh_CN, platform encoding: GBK
      OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"

Maven 本地仓库的配置

MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置(maven 的安装目录下):

<!-- settings 标签下 -->
<!-- 默认值:${user.home}/.m2/repository -->
<localRepository>/path/to/local/repo</localRepository>

Maven 工程的目录结构

  • src/main/java —— 存放项目的.java 文件
  • src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
  • src/main/webapp —— 存放项目页面元素,普通 Java 项目没有这个目录
  • src/test/java —— 存放所有单元测试 .java 文件,如 JUnit 测试类
  • src/test/resources —— 测试资源文件
  • target —— 项目输出位置,编译后的 class 文件会输出到此目录
  • pom.xml —— maven 项目核心配置文件

Maven 常用命令

  • compile:编译,mvn compile 将 src/main/java 下的文件编译为 class 文件输出到 target 目录下
  • test:测试,mvn test 执行 src/test/java 下的单元测试类
  • clean:清理,mvn clean 删除 target 目录
  • package:打包,mvn package 将 Java 工程打成 jar 包,对于 web 工程打成 war 包
  • install:安装,mvn install 将打成 jar 或 war 包发布到本地仓库中

pom.xml

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 公司或组织域名倒序+项目名 -->
    <groupId>com.bin.test</groupId>
    <!-- 模块名 -->
    <artifactId>Demo</artifactId>
    <!-- 打包方式 jar 或 war 或 pom :用于 maven 工程的继承,通常父工程设置为 pom-->
    <packaging>war</packaging>
    <!-- 版本 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目的显示名称,通常用于 maven 产生的文档中 -->
    <name>Demo Maven Webapp</name>
    <!-- 指定项目站点,通常用于maven产生的文档中 -->
    <url>http://maven.apache.org</url>
    <!-- 描述此项目,通常用于maven产生的文档中 -->
    <description>测试</description>

    <properties>
        <!-- 占位符 -->
        <spring.version>4.2.9.RELEASE</spring.version>
    </properties>

    <dependencies>
    <!-- 依赖的项目 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <repositories>
    <!-- 默认的中央仓库设置 -->
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <build>
        <!-- 项目的名字 -->
      <finalName>WebMavenDemo</finalName>
      <!-- 描述项目中资源的位置 -->
      <resources>
        <!-- 自定义资源1 -->
        <resource>
          <!-- 资源目录 -->
          <directory>src/main/java</directory>
          <!-- 包括哪些文件参与打包 -->
          <includes>
            <include>**/*.xml</include>
          </includes>
          <!-- 排除哪些文件不参与打包 -->
          <excludes>
            <exclude>**/*.txt</exclude>
              <exclude>**/*.doc</exclude>
          </excludes>
        </resource>
      </resources>
        <plugins>
            <!-- 设置 jdk 编译版本 -->
            <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>
            <!-- 添加 tomcat7 插件,自带 tomcat6, 就算加上 7 了,执行 mvn tomcat:run 也还是 6 -->
            <!-- 启动命令:mvn tomcat7:run -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <uriEncoding>utf-8</uriEncoding>
                    <port>8070</port>
                    <path>/</path>
                </configuration>
            </plugin>
            <!-- 此时点击 idea 最右侧 Maven Projects,就可以看到我们新添加的 tomcat7 插件,双击 tomcat7 插件下 tomcat7:run 命令直接运行项目 -->
        </plugins>
    </build>

maven坐标和仓库对应的映射关系:[groupId]\[artifactId]\[version]\[artifactId]-[version].jar

去本地仓库看一下此目录:org\springframework\spring-core\4.3.4.RELEASE\spring-core-4.3.4.RELEASE.jar

依赖范围

scope就是依赖的范围

  1. compile,默认值,适用于所有阶段(开发、测试、部署、运行)
  2. provided,只在开发、测试阶段使用,目的是不让 Servlet 容器和你本地仓库的 jar 包冲突 。如 servlet.jar。
  3. runtime,只在运行时使用,如 JDBC 驱动,适用运行和测试阶段。
  4. test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  5. system,类似 provided,需要显式提供包含依赖的 jar 文件的路径,Maven 不会在 Repository 中查找它,不推荐使用。
依赖范围 对于编译 classpath 有效 对于测试 classpath 有效 对于运行时 classpath 有效 例子
compile Y Y Y spring-core
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y JDBC 驱动
system Y Y - 本地的

idea 开发 maven 项目

idea 的 的 maven 配置:File --> Settings --> Build, Execution, Deployment --> Build Tools --> Maven

创建 Maven 项目速度慢问题

https://www.cnblogs.com/del88/p/6286887.html

IDEA 根据 maven archetype 的本质,其实是执行 mvn archetype:generate 命令,该命令执行时,需要指定一个 archetype-catalog.xml 文件。

该命令的参数 -DarchetypeCatalog,可选值为:remoteinternal(内置的,即 maven-archetype-plugin 内置的 archetypeCatalog 文件),local(本地的,即本地 ~/.m2/ 下的 archetypeCatalog 文件)等,用来指定 archetype-catalog.xml 文件从哪里获取。

默认为 remote,即从 http://repo1.maven.org/maven2/archetype-catalog.xml 路径下载 archetype-catalog.xml 文件。

可以在 Maven --> Runner --> VM Options,增加参数:-DarchetypeCatalog=internal

创建 Maven 项目

普通 Java 项目,勾选 Create from archetype(可选,最后生成的目录结构不一样),选择 maven-archetype-quickstart

web 项目,勾选 Create from archetype),选择 maven-archetype-webapp

填写 GroupId(公司名称),ArtifactId(项目名),Version(版本),剩下的默认即可。最后生成的目录不完整,需自己手动补上。

http://yun.itheima.com/course/234.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 bin07280@qq.com

文章标题:Maven 学习

文章字数:1.8k

本文作者:Bin

发布时间:2019-08-26, 21:41:45

最后更新:2019-09-11, 21:42:24

原始链接:http://coolview.github.io/2019/08/26/Java/Maven%20%E5%AD%A6%E4%B9%A0/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录