当前位置:   article > 正文

Maven_-dmaven.test.skip

-dmaven.test.skip

Maven

1. 以前项目存在的问题

  1. 一个项目就是一个工程,如果非常大就不适合使用package来划分,要按模块来。
  2. 以前项目中的jar需要手动复制粘贴,相同的jar出现在不同的工程中,臃肿!借助Maven,将jar保存仓库,有需要去引用进行了。
  3. 或者jar需要我们自己到官网下载,有的还需要其他的依赖,而且各个官网下载形式五花八门。
  4. jar还需要手动加入项目。

2. Maven概念

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具

即是一款服务于Java平台的自动化构建工具。(构建:一些资源生成一个项目的过程)


3. Maven安装

  1. 要有JAVA_HOME环境变量

  2. 下载安装包 Download Apache Maven

  3. 配置Maven环境变量,MAVEN_HOME:D:\你的路径\apache-maven-3.8.4, 和path: %MAVEN_HOME%\bin

  4. mvn -v 输入命令行查看是否成功


4. 核心概念

  • 约定的目录结构

目录结构(因为Maven要管理我们的项目): 例如项目 - hello

hello:工程名

hello/src:源码

hello/src/main:存放主程序

hello/src/main/java:程序包,和包java源文件

hello/src/main/resources:框架和其他工具的配置文件

hello/src/test:存放测试程序(这个下面也可以有java,resources目录)

hello/src/test/java

hello/src/test/resources

hello/pom.xml:Maven工程核心配置文件


  • POM:Project Object Model,项目对象模型,pom.xml

坐标:groupIdartifactIdversion

packaging标签,是打包后的后缀名,默认jar,可以不写

dependencies标签,里面是dependency标签,表示各种依赖

properties标签:设置属性,也可以设置jdk版本

build标签:maven构建项目时的配置信息,例如编译插件的jdk版本

<dependencies>
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
</dependencies>

<properties> </properties>
<build> </build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

  • 坐标:
<groupId>com.sutong</groupId>       <!-- 公司组织域名倒叙+项目名-->
<artifactId>testweb</artifactId>    <!-- 模块名/项目名-->
<version>1.0-SNAPSHOT</version>     <!-- 版本,SNAPSHOT代表快照版,不稳定版本-->

对应仓库路径:com/sutong/testweb/1.0-SNAPSHOT/com.sutong-testweb-1.0-SNAPSHOT.jar
  • 1
  • 2
  • 3
  • 4
  • 5

  • 依赖

Maven解析依赖会去本地仓库去找,找不到去中央仓库下载,都找不到报错。

如果是我们自己的工程执行install命令就会放到本地仓库。

依赖范围:

1)complie(对主程序和测试都有效,依赖也参与打包)

2)test(只测试有效,不参与打包)

3)provided(开发有,不参与打包,部署运行会去掉,服务器可以提供,例子:servlet-api.jar)

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>    // 依赖范围,不写默认是complie
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 仓库:资源存放的位置

  • 生命周期:各个构建环节的执行顺序,清理,编译,测试,报告,打包,安装,部署等

  • 插件/目标:执行maven构建的时候用的工具

  • 继承

  • 聚合


5. Maven命令

构建命令要进入pom.xml所在的目录下,输入命令。

  • mvn clean:清理
  • mvn complie:编译主程序,main目录下的所有
  • mvn test-complie:编译测试程序,test目录下的所有
  • mvn test:执行测试
  • mvn package:执行打包
  • mvn install:安装,把生成好的jar,war安装到本地仓库
  • mvn site:生成站点

执行命令需要插件时,Maven核心程序回去本地库去找,如果没有,则会去联网去中央仓库去下载(就下载一次)

本地仓库默认位置:C:\users\用户名\.m2\repository\

可以修改:apache-maven-3.8.4\conf\settings.xml\localRepository标签 中间改为自己的路径就行了:

<localRepository>D:\Learning\Java_Practice\JarLibraries\RepMaven</localRepository>


6. Idea创建maven项目

Idea使用前需要设置一下(本人的是2020.1版本)
在这里插入图片描述

  • 普通的java项目:
    在这里插入图片描述
<?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.sutong</groupId>
  <artifactId>test01-se</artifactId>
  <version>1.0-SNAPSHOT</version>


  <!-- 设置属性-->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>  <!-- 编译用的jdk版本-->
    <maven.compiler.target>1.8</maven.compiler.target>  <!-- 应该运行在的版本-->
  </properties>

  <!-- 依赖-->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <!-- 里面写不写都有的都行,idea帮我们加上可以方便我们修改而已-->
  <build>...</build>
</project>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

  • web工程(还需要手动创建一些目录,main下的java,resource,main同级的test和下面的java,resource):
    在这里插入图片描述
<?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.sutong</groupId>
  <artifactId>test02-web</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>


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

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

Maven:常用设置

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


自定义属性(全局变量):
在properties中自定义标签声明变量(标签名就是变量名),在pom.xml文件的其他位置使用${变量名}来使用这个变量
一般用来定义依赖的版本号,当多处使用相同的版本号时,特别是spring依赖很多,类似把版本号提取出来,修改一处就行了
<properties>
    <spring-version>5.2.0</spring-version>
</properties>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

资源插件,mybatis中可能会用到

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>  <!-- 处理的目录-->
            <includes>
                <!-- 扩展名是properties,xml的文件拷贝到classes下-->
                <include>**/*.properties</include>  
                <include>**/*.xml</include>
            </includes>
            <!-- false不启动过滤器,*.properties/*.xml已经起到过滤作用了-->
            <filtering>false</filtering>  
        </resource>
    </resources>
</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 默认没有使用resources的时候,maven执行编译代码时,会把src/main/resources目录中的文件拷贝到target/classes文件夹里,对于src/main/java目录下的非.java文件不处理,即不拷贝到target/classes文件夹里。

  2. 而我们程序需要把一些文件方法src/main/java下供java程序执行使用,而这时就需要告诉maven在编译时这些文件需要拷贝到target/classes对应的文件夹里,这时就需要build中加入resources

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/87050
推荐阅读
相关标签
  

闽ICP备14008679号