zoukankan      html  css  js  c++  java
  • 5. maven pom文件中常用的标签

    maven pom文件中常用的标签

    通过pom文件可以对maven进行设置,其中有一些常用的标签我们来一起看一下:

    packaging  【这个要懂啊】

    下面的groupId,artifactId,version之前有说过了,这里就不再解释了,其中有个packaging标签,该标签的作用是指定maven打包的方式,有三个选项:

    • pom

      该方式主要是管理maven项目的,里面不放源码,用于继承或聚合的maven模块中

    • war

      会将项目打成war包,对于web项目来说,通常会设置为war

    • jar

      打成jar包,对于普通java项目来说,通常会设置为jar

        <groupId>com.monkey1024</groupId>
        <artifactId>19mavenweb</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>

    dependency  【装Maven 那个链接的】

    我们要使用的jar包的gav信息放到这里,这样maven就可以自动下载相关jar包了。 

     

    scope  【dependency 除了 装 gav 之外 还装这个 scope 参数如下:】

    在dependency标签下有一个scope标签,该标签的作用是可以设置依赖在项目的使用阶段,通常来说,项目包含:编译、运行、测试、打包这些不同的阶段。

    • compile

      是默认值,适用于所有阶段,编译、运行、测试、打包都会包含到项目中。

    • test

      只在测试时使用,用于编译和运行测试代码,不会随项目发布, 例如junit,如果不修改junit依赖中的scope,我们只能在test目录下使用junit相关类。

    • runtime

      只在运行时使用,例如mysql的JDBC驱动依赖,我们在编写代码的时候使用java.sql包下的类即可,在运行的时候才会用到该依赖,适用运行和测试阶段。

    • provided

      编译、运行阶段使用,打包时不会包含该依赖,例如servlet.jar,这个包在tomcat容器中已经提供了,因此打包时servlet.jar 无需包含在项目中。

    • system

      类似provided,需要显式提供包含依赖的jar的路径(使用systemPath标签),Maven不会在仓库中查找它。使用较少

    systemPath  【注意 它也是放在dependency 里, 一般都不会这样干 可以下载何乐而不为呢?】

    引入非本地仓库中的jar包,有时候我们需要使用一些jar包,但是这些jar在maven仓库中并不存在,此时可以使使用下面方式引用,以log4j为例:

    <dependency>
      <groupId>org.apache</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/log4j-1.2.17.jar</systemPath>
    </dependency>

    但是 要加配置:如果这样引入非本地参考的jar包时在使用maven打包时是不会将该jar打包入项目中的【Maven打包不会将这个非本地仓库的jar包打进去】,所以还需要添加下面内容:

    <build>
            <resources>
                <resource>
                    <directory>${project.basedir}/lib</directory>
                    <targetPath>BOOT-INF/lib/</targetPath>
                    <includes>
                        <include>**/*.jar</include>
                    </includes>
                </resource>
                <resource>
                    <directory>src/main/resources</directory>
                    <targetPath>BOOT-INF/classes/</targetPath>
                </resource>
            </resources>
    </build>

    里面的一些东西 我也看不多懂 因为我暂且还没用过呢.... 所以 你baidu即可

    properties 【我也不懂 后面懂了回来补】

    有时候对于同一个技术需要编写很多个依赖引入相关的jar包,每个依赖中都要填写版本号,倘若更换版本号的话,修改的地方比较多,所以可以使用properties统一管理版本号,logback-version可以自由命名,通过${}方式进行引用:

    <properties>
        <logback-version>1.2.3</logback-version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>${logback-version}</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>${logback-version}</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-access</artifactId>
          <version>${logback-version}</version>
        </dependency>

    1.内置属性

    ${basedir} 表示项目根目录,即包含pom.xml文件的目录

    ${version} 等同于 ${project.version} 或者 ${pom.version} 表示项目版本  

    例:

    <?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>org.example</groupId>
      <artifactId>s1</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>  <!--指定Maven打包的方式-->
      <name>s1 Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <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>
          <!--  上面gav就不多说了啊 就是导包 -->
    <!-- 下面这个是:通常来说,项目包含:编译、运行、测试、打包这些不同的阶段。-->
          <scope>test</scope>
        </dependency>
    
    
      </dependencies>
    
    <!-- 至于这个我真的不知道是什么啊 -->
      <build>
        <finalName>s1</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
          <plugins>
            <plugin>
              <artifactId>maven-clean-plugin</artifactId>
              <version>3.1.0</version>
            </plugin>
            <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>3.0.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
            </plugin>
            <plugin>
              <artifactId>maven-surefire-plugin</artifactId>
              <version>2.22.1</version>
            </plugin>
            <plugin>
              <artifactId>maven-war-plugin</artifactId>
              <version>3.2.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-install-plugin</artifactId>
              <version>2.5.2</version>
            </plugin>
            <plugin>
              <artifactId>maven-deploy-plugin</artifactId>
              <version>2.8.2</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

    本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/14887023.html

  • 相关阅读:
    Docker容器(分享十五)
    oracle数据库迁移主从复制ADG(分享十四)
    mysql数据库迁移主从复制(分享十三)
    rsync+inotify实现服务器之间文件实时同步(分享十三)
    mysql数据库迁移(分享十二)
    数据库迁移(分享十一续集)
    Codeforces 1185G2 Playlist for Polycarp (hard version) 背包,暴力
    Codeforces 747F Igor and Interesting Numbers DP 组合数
    Codeforces 745E Hongcow Buys a Deck of Cards 状压DP / 模拟退火
    Codeforces 1140F 线段树 分治 并查集
  • 原文地址:https://www.cnblogs.com/bi-hu/p/14887023.html
Copyright © 2011-2022 走看看