创建maven项目

一 通过archetype创建普通Java项目 (了解)

二 通过archetype创建Web项目 (了解)

三 创建普通maven项目

四 通过Java Enterprise创建web项目

增加依赖后,点击图中按钮,加载依赖

五 maven项目结构

--src

--main (存放项目的源文件)

--java (存放java代码,相当于传统项目中的src目录)

--resources (存放配置文件)

--webapp(存放web项目中页面相关资源)

--test (存放项目的单元测试代码)

--java(测试代码)

--pom.xml

六 pom文件

pom.xml,这是Maven项目的核心配置文件,pom称为Project Object Model(项目对象模型),它用于描述整个Maven项目,所以也称为Maven描述文件。描述项目用到的资源,包括源代码目录、测试代码目录等的位置,以及项目依赖的外部jar包。

每一个项目都有一个POM文件。

POM文件即pom.xml,应该放在项目的根目录下。一个项目如果分为多个子项目,一般来讲,父项目有一个POM文件,每一个子项目都有一个POM文件。在这种结构下,既可以一步构建整个项目,也可以各个子项目分开构建。

在 POM 中主要可以设置如下配置:

  • 基本配置
  • 插件配置
  • 依赖配置
  • 构建环境配置
  • 部署分发配置

6.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.0</modelVersion>

  <groupId>com.qfedu</groupId>
  <artifactId>test</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>
  
  <properties>  
    <file.encoding>UTF-8</file.encoding>  
    <java.source.version>1.8</java.source.version>  
    <java.target.version>1.8</java.target.version>  
  </properties>
</project>

modelVersion

指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0

groupId

公司名或是组织名。一般来说groupId是由三个部分组成,每个部分之间以"."分隔,第一部分是项目用途,比如用于商业的就是"com",用于非营利性组织的就是"org";第二部分是公司名,比如"baidu";第三部分是项目名

artifactId

可以认为这是Maven构建的项目名

version

版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本

packaging

项目的类型,描述了项目打包后的输出,默认是 jar,web项目可以使用war,聚合工程使用pom

properties

定义一些常量,在pom中的其它地方可以直接引用,如${file.encoding}

注意:在Maven中很重要的一点是,groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标(GAV坐标)

6.2 依赖配置

<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">
  
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    
    <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-registry-zookeeper</artifactId>
      <version>2.7.9</version>
      <scope>compile</scope>
      <!--排除log4j-->
      <exclusions>
        <exclusion>
          <artifactId>log4j</artifactId>
          <groupId>log4j</groupId>
        </exclusion>
      </exclusions>
    </dependency>

</dependencies>
</project>

dependencyManagement

对依赖进行管理。

1)仅仅声明依赖的jar,这些jar不会实际引入到模块中。

2)该元素能够约束子模块中 dependencies 下依赖的使用。子模块中, dependencies 下声明的依赖若未指定版本,则使用 dependencyManagement 中指定的版本,否则,将覆盖 dependencyManagement 中的版本。

dependencies

设置当前项目依赖的jar包,包含多个<dependency>子标签

dependency

每个依赖的jar包对应一个dependency

scope

依赖范围

1)compile(编译范围) compile是默认的范围,会被打包。

2)provided(已提供范围) provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。它们不是传递性的,也不会被打包。比如,针对servlet的jar

3)runtime(运行时范围) runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,针对mysql驱动的jar

4)test(测试范围)只有在测试编译和测试运行阶段可用。比如,针对junit的jar

5)system(系统范围)必须显式的提供一个对于本地系统中JAR文件的路径。注意该范围是不推荐使用。

6)import(导入范围)只能与 dependencyManagement 配合使用,用于将目标 pom.xml 文件中 dependencyManagement 的配置导入合并到当前 pom.xml 的 dependencyManagement 中

exclusions

排除依赖关系的jar包,包含多个<exclusion>

exclusion

每个需要排除的依赖对应一个<exclusion>

查找jar依赖的地址https://mvnrepository.com/

6.3 构建配置

<build>  
    <finalName>myPorjectName</finalName>    
    <!-- 构建产生的所有文件存放的目录 -->
    <directory>${basedir}/target</directory>  
  
    <resources>
      <!--需要设置打包的文件 特别是非java文件-->
      <resource>
          <directory>src/main/java</directory>
          <includes>
              <include>**/*.xml</include>
          </includes>
      </resource>
      <resource>
          <directory>src/main/resources</directory>
          <includes>
              <include>**/*.xml</include>
              <include>**/*.properties</include>
          </includes>
      </resource>
  </resources>
  
</build>  

build

project的子标签,用于构建配置

finalName

产生的构件的文件名,默认值是${artifactId}-${version}

build标签下的directory

构建产生的所有文件存放的目录,默认为${basedir}/target,即项目根目录下的target

resources

项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里

resource

具体的资源配置,属于resources的子标签

resource下的directory

描述存放资源的目录,该路径相对POM路径

resource下的includes

包含的资源文件列表,**表示任意路径

6.4 插件配置

<plugins>
  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <uriEncoding>UTF-8</uriEncoding>
      <path>/testmaven</path>
    </configuration>
  </plugin>
</plugins>

pluginManagement

与 dependencyManagement 元素的原理十分相似,仅声明插件,在子模块的plugins中配置插件才会生效

plugins

bulid的子标签,配置多个插件

plugin

指定的插件的配置

configuration

针对插件的具体配置项,配置项因插件而异

七 maven项目生命周期管理常用命令

1)双击对应项可以执行相关操作

2)命令行中输入命令执行

mvn compile 编译源代码

mvn clean 清理项目

mvn package 打包

mvn clean package 先清理再打包

mvn deploy 部署项目

mvn install 安装当前工程的输出文件到本地仓库

八 使用maven构建员工程序

8.1 新建maven项目

通过Java Enterprise创建web项目

8.2 修改pom文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- GAV坐标 -->
    <!-- 公司 组织名称   域名倒序 -->
    <groupId>com.qfedu</groupId>
    <!-- 项目名 -->
    <artifactId>empmaven</artifactId>
    <!-- 版本号 -->
    <version>1.0-SNAPSHOT</version>
    <name>empmaven</name>
    <!-- 打包 jar war -->
    <packaging>war</packaging>

    <!-- 属性 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>

        <!-- 自定义属性 -->
        <junit.version>5.8.1</junit.version>
    </properties>

    <!-- 依赖的jar scope 默认complie provider-->
    <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>commons-dbutils</groupId>
            <artifactId>commons-dbutils</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <!-- 项目构建 -->
    <build>

        <!-- 插件 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.2</version>
            </plugin>
            <!-- maven编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerVersion>1.8</compilerVersion>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <uriEncoding>UTF-8</uriEncoding>
                    <path>/empsys</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

8.3 项目结构

注意:源码放在java目录下,和配置相关的资源文件放在resources目录下

8.4 运行项目

1)配置tomcat服务器

2)tomcat插件(了解)

或者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值