码迷,mamicode.com
首页 > 其他好文 > 详细

maven 03-pom.xml核心配置

时间:2018-11-02 17:55:19      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:公共属性   idt   发包   hot   pac   gem   tom   输出   bubuko   

maven的pom.xml配置文件并不单单只是一个配置依赖程序包的关系,他可以配置更多的属性,包括插件项。

定义环境属性

  • 在pom.xml文件里面定义一些基本的变量信息
  • 可以将项目名称、版本编号、一些其他的相关属性都作为变量进行整体的声明
  • 在整个配置就可以利用这些变量的引用实现内容的变更
<!-- 定义环境属性 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jdk.version>1.8</jdk.version>
    <junit.version>4.12</junit.version>
    <spring.version>5.1.1.RELEASE</spring.version>
    <servlet.version>4.0.1</servlet.version>
  </properties>

<!-- 引用变量 -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
    </dependency>
  </dependencies>

插件配置

  • 所有在MyEclipse之中进行的Maven配置都没有实际意义,只是针对于当前的工作区和当前使用的项目有效
  • 为了真正的让整个的项目长期有效,可以在pom.xml文件中设置一些相关插件

1、修改pom.xml文件进行JDK编译插件配置

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jdk.version>1.8</jdk.version> <!-- 定义一个描述jdk版本的公共属性 -->
</properties>
<build>
      <finalName>m2work</finalName>
      <plugins> <!-- 定义要使用的插件,在整个Maven里面有很多插件 -->
          <plugin>
              <groupId>org.apache.maven.plugins</groupId> <!-- 定义插件的组信息 -->
              <artifactId>maven-compiler-plugin</artifactId> <!-- 要使用的是编译插件 -->
              <configuration>
                  <source>${jdk.version}</source>
                  <target>${jdk.version}</target>
                  <encode>${project.build.sourceEncoding}</encode>
              </configuration>
          </plugin>
      </plugins>
  </build>

2、整体项目更新:ALT + F5

  • MyEclipse虽然已经为项目配置好了插件,但这个时候该插件没有实际的效果
  • 如果要想让配置起作用,还需要进行整体的项目更新

技术分享图片

3、可以直接通过package进行程序的打包处理

技术分享图片

4、输出源代码jar包

  • 修改pom.xml配置文件,然后直接通过package进行程序的打包处理
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <configuration>
        <encode>${project.build.sourceEncoding}</encode>
    </configuration>
    <executions>
        <execution>
            <id>sources</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

5、生成相关程序文档,前提是代码有详细注释

  • 修改pom.xml配置文件,然后直接通过package进行程序的打包处理
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <configuration>
        <encode>${project.build.sourceEncoding}</encode>
    </configuration>
    <executions>
        <execution>
            <id>javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

技术分享图片

包的作用域

  • WEB项目开发会将所有的开发程序打包为一个*.war文件
  • 那么在这个war文件里面就会存在所有的第三方程序开发包
  • 对于一些重要的开发包保存在lib目录下
  • 如果不需要的开发包就不希望其输出到lib之中
  • 例如:junit只做测试使用,而实际项目发布的时候不希望输出到war文件之中
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>
  • scope就属于开发包的作用域
  • junit只是一个测试环境,所以使用一个test的作用域
  • spring-core并没有任何配置,默认为compile
  • servlet程序包本身都会由Tomcat容器提供,所以这个包只在编译项目的时候有效,本质上没有没有保存在lib目录下

  • compile
    • 依赖项的默认作用范围
    • 依赖项在运行、测试、编译
  • runtime
    • 依赖项只有在运行时才需要
  • test
    • 依赖项只有在测试时才需要
  • provided
    • 依赖项只有在编译和测试时才需要,运行时由jdk或者运行容器提供
  • system
    • 依赖项为自己提供,不需要Maven仓库下载

依赖包的排除

  • 在进行包的依赖控制的时候,会发现存在有其他的依赖关系,里面存在有重复的依赖关系
  • 这时候整个项目之中只会存在有一个公共的commons-logging开发包
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

继承关系

  • 在一个项目中,几乎每个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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.liang</groupId>
  <artifactId>base</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>  <!-- 定义一个父的pom.xml文件 -->

  <name>base</name>
  <url>http://maven.apache.org</url>

<!-- 在以后的开发中,所有的版本控制都交给base完成 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jdk.version>1.8</jdk.version> <!-- 定义一个描述jdk版本的公共属性 -->
    <junit.version>4.12</junit.version>
    <spring.version>5.1.1.RELEASE</spring.version>
    <servlet.version>4.0.1</servlet.version>
  </properties>
 
  <build>
      <finalName>base</finalName>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>${jdk.version}</source>
                  <target>${jdk.version}</target>
                  <encode>${project.build.sourceEncoding}</encode>
              </configuration>
          </plugin>
          
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <configuration>
                  <encode>${project.build.sourceEncoding}</encode>
              </configuration>
              <executions>
                  <execution>
                      <id>sources</id>
                      <goals>
                          <goal>jar</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
          
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <configuration>
                  <encode>${project.build.sourceEncoding}</encode>
              </configuration>
              <executions>
                  <execution>
                      <id>javadocs</id>
                      <goals>
                          <goal>jar</goal>
                      </goals>
                  </execution>
              </executions>
          </plugin>
      </plugins>
  </build>
</project>

  • 子项目的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
      <groupId>cn.liang</groupId>
      <artifactId>base</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <relativePath>../base/pom.xml</relativePath>
  </parent>

  <artifactId>m2work</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1</version>
   <name>m2work</name>
   <url>http://maven.apache.org</url>

   <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
      </dependency>
         
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>${servlet.version}</version>
      </dependency>
          
      <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${spring.version}</version>
      </dependency>  
  </dependencies>
  
  <build>
      <finalName>m2work</finalName>
  </build>
</project>
  • 在父类的pom.xml文件里面直接导入好所需要的开发包
<dependencyManagement>
  <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
      </dependency>
  </dependencies>
 </dependencyManagement>
  • 但对于子项目而言,实际上也需要继续导入开发包,只不过不需要管理版本编号问题了
<dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
      </dependency>
  </dependencies>

maven 03-pom.xml核心配置

标签:公共属性   idt   发包   hot   pac   gem   tom   输出   bubuko   

原文地址:https://www.cnblogs.com/liangjingfu/p/9897384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!