Pom文件(2):build标签详解

本文详细解读了Maven POM.xml中build标签的分类,包括全局配置(projectbuild)和环境配置(profilebuild),并介绍了关键元素如defaultGoal、directory、finalName等,以及Resources、plugins和pluginManagement的配置。
摘要由CSDN通过智能技术生成

目录

1、build标签分类

1.1、全局配置(project build)

1.2、环境配置(profile build)

2、配置说明

2.1、基本元素

2.2、Resources配置

2.3、plugins配置

2.4、pluginManagement配置


1、build标签分类

1.1、全局配置(project build)

针对整个项目的所有情况都有效

<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">  
  ...

  <build>…</build> 
  ...

</project> 

1.2、环境配置(profile build)

针对不同的profile配置

<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">  
  ... 
  <profiles>  
    <profile>  
      <!– "Profile Build" contains a subset of "Project Build"s elements –>  
      <build>…</build>  
    </profile>  
  </profiles>  
  ...

</project>  

2、配置说明

2.1、基本元素

<build>  
        <defaultGoal>install</defaultGoal>  
        <directory>${basedir}/target</directory>  
        <finalName>${artifactId}-${version}</finalName>  
        <filters>  
                <filter>filters/filter1.properties</filter>  
        </filters>  
         ...  
</build>  
  • defaultGoal
    • 执行build任务时,如果没有指定目标,将使用的默认值。
    • 如上配置:在命令行中执行mvn,则相当于执行mvn install
  • directory
    • build目标文件的存放目录,默认在${basedir}/target目录
  • finalName
    • build目标文件的名称,默认情况为${artifactId}-${version}
  • filter
    • 定义*.properties文件,包含一个properties列表,该列表会应用到支持filter的resources中。也就是说,定义在filter的文件中的name=value键值对,会在build时代替${name}值应用到resources中。 maven的默认filter文件夹为${basedir}/src/main/filters

2.2、Resources配置

<build>  
        ...  
       <resources>  
          <resource>  
              <targetPath>META-INF/plexus</targetPath>  
              <filtering>false</filtering>  
              <directory>${basedir}/src/main/plexus</directory>  
              <includes>  
                <include>configuration.xml</include>  
              </includes>  
              <excludes>  
                <exclude>**/*.properties</exclude>  
              </excludes>  
         </resource>  
    </resources>  
    <testResources>  
        ...  
    </testResources>  
    ...  
</build>  

用于包含或者排除某些资源文件

  • resources
    • 一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里
  • targetPath
    • 指定build后的resource存放的文件夹,默认是basedir。
    • 通常被打包在jar中的resources的目标路径是META-INF
  • filtering
    •  true/false,表示为这个resource,filter是否激活
  • directory
    •  定义resource文件所在的文件夹,默认为${basedir}/src/main/resources
  • includes
    • 指定哪些文件将被匹配,以*作为通配符
  • excludes
    • 指定哪些文件将被忽略
  • testResources
    • 定义和resource类似,只不过在test时使用

2.3、plugins配置

<build>  
    ...  
    <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-jar-plugin</artifactId>  
            <version>2.0</version>  
            <extensions>false</extensions>  
            <inherited>true</inherited>  
            <configuration>  
                <classifier>test</classifier>  
            </configuration>  
            <dependencies>...</dependencies>  
            <executions>...</executions>  
        </plugin>  
    </plugins>  
</build>  

用于指定使用的插件

  • GAV
    • 指定插件的标准坐标
  • extensions
    • 是否加载plugin的extensions,默认为false
  •      inherited
    • true/false,这个plugin是否应用到该pom的孩子pom,默认为true
  • configuration
    • 配置该plugin期望得到的properties
  • dependencies
    • 作为plugin的依赖
  • executions
    • plugin可以有多个目标,每一个目标都可以有一个分开的配置,可以将一个plugin绑定到不同的阶段。假如绑定antrun:run目标到verify阶段

2.4、pluginManagement配置

<build>  
    ...  
    <pluginManagement>  
        <plugins>  
            <plugin>  
              <groupId>org.apache.maven.plugins</groupId>  
              <artifactId>maven-jar-plugin</artifactId>  
              <version>2.2</version>  
                <executions>  
                    <execution>  
                        <id>pre-process-classes</id>  
                        <phase>compile</phase>  
                        <goals>  
                            <goal>jar</goal>  
                        </goals>  
                        <configuration>  
                            <classifier>pre-process</classifier>  
                        </configuration>  
                    </execution>  
                </executions>  
            </plugin>  
        </plugins>  
    </pluginManagement>  
    ...  
</build>  

pluginManagement的配置和plugins的配置是一样的,只是用于继承,使得可以在孩子pom中使用。 则在子pom中,我们只需要配置:

<build>  
    ...  
    <plugins>  
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>  
            <artifactId>maven-jar-plugin</artifactId>  
        </plugin>  
    </plugins>  
    ...  
</build>  

参考:pom.xml中build标签详解 - 初衷丶 - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值