maven之pom中的build标签

这篇具有很好参考价值的文章主要介绍了maven之pom中的build标签。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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、build 配置说明

2.1、基本元素

<build>
	<!-- 指定默认的 Maven 构建目标。当运行 mvn 命令时,将执行指定的目标(用不到) -->
	<defaultGoal>install</defaultGoal>
	<!-- 指定 Maven 构建输出的目录路径,下列是默认值-->	
	<directory>target</directory>  
	<finalName>${artifactId}-${version}</finalName>
	<!-- 指定源代码文件的目录路径 -->
	<sourceDirectory>src/main/java</sourceDirectory>
	<!-- 指定脚本文件的源代码目录路径(用不到) -->
	<scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
	<!-- 指定test的源代码目录路径 -->
	<testSourceDirectory>src/test/java</testSourceDirectory>
	<!-- 指定编译后的类文件输出的目录路径 -->
	<outputDirectory>target/classes</outputDirectory>
	<!-- 指定编译后的test类文件输出的目录路径 -->
	<testOutputDirectory>target/test-classes</testOutputDirectory>
	<!-- 配置项目的资源目录, 例如配置文件、静态资源等 -->
	<resources>
		 <resource>
			<directory>src/main/resources</directory>
			<!-- 可以有占位符,并替换占位符,即下面的${application.environment} -->
			<filtering>true</filtering>
			<includes>
				<include>bootstrap.properties</include>
				<include>bootstrap-${application.environment}.properties</include>
			</includes>
		</resource>
		<resource>
			<directory>src/main/resources</directory>
			<!-- 没有占位符 -->
			<filtering>false</filtering>
			<includes>
				<include>banner.txt</include>
				<include>logback-spring.xml</include>
			</includes>
		</resource>
	</resources>
	<!-- 配置项目的test资源目录, 例如配置文件、静态资源等 -->
	<testResources>
		<testResource>
			<directory>src/test/resources</directory>
		</testResource>
	</testResources>
	<filters>  
		<filter>filters/filter1.properties</filter>  
	</filters>  
	<!-- 插件版本管理 -->
	<pluginManagement>
		<plugins>
			<!-- Springboot项目打包插件,生成JAR包 -->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>${spring-boot.version}</version>
			</plugin>
			<!-- Maven编译插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${maven-compiler-plugin.version}</version>
			</plugin>
		</plugins>
	</pluginManagement>
	...
</build>
  • defaultGoal :执行build任务时,如果没有指定目标,将使用的默认值。如上配置:在命令行中执行mvn,则相当于执行mvn install
  • directory :  构建结果输出目录,默认在${basedir}/target目录。
  • finalName :build目标文件的名称,默认情况为${artifactId}-${version}
  • sourceDirectory :主体源程序存放目录,默认在${basedir}/src/main/java
  • scriptSourceDirectory :脚本源程序存放目录,默认在: ${basedir}/src/main/scripts
  • testSourceDirectory :测试源程序存放目录,默认在${basedir}/src/test/java
  • outputDirectory :主体源程序编译结果输出目录,默认在${basedir}/target/classes
  • testOutputDirectory :测试源程序编译结果输出目录,默认在${basedir}/target/test-classes
  • resources :主体资源文件存放目录,默认在: ${basedir}/src/main/resources
  • testResources :测试资源文件存放目录,默认在: ${basedir}/src/test/resources
  • filters :给出对资源文件进行过滤的属性文件的路径,默认位于${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 : 构建过程中是否对资源进行过滤,默认false。
    • directory :定义resource文件所在的文件夹,默认为${basedir}/src/main/resources
    • includes :指定哪些文件将被匹配,以*作为通配符。
    • excludes :指定哪些文件将被忽略。
  • testResources :定义和resource类似,只不过在test时使用。

2.3、plugins配置 

<build>  
    ...  
    <plugins>  
        <!-- 插件的坐标。此处引用的 maven-compiler-plugin 插件不是第三方的,是一个 Maven 自带的插件。 -->
        <plugin>  
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version> 
            <extensions>false</extensions>  
            <inherited>true</inherited>  
            <!-- configuration 标签:配置 maven-compiler-plugin 插件 -->
            <configuration>
                 <!-- 具体配置信息会因为插件不同、需求不同而有所差异 -->
                <classifier>test</classifier>                
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            <dependencies>...</dependencies>  
            <executions>  
				<execution>  
					<id>pre-process-classes</id>  
					<!-- phase : 关联的生命周期阶段 -->
					<phase>compile</phase>
					<!-- goals/goal:关联指定生命周期的目标 -->					
					<goals>  
						<goal>jar</goal>  
					</goals>  
					<configuration>  
						<classifier>pre-process</classifier>  
					</configuration>  
				</execution>  
			</executions>  
        </plugin>  
    </plugins>  
</build>  

 用于指定使用的插件:

  • GAV(即: groupId、artifactId、version):指定插件的标准坐标。
  • extensions :是否加载该插件的扩展,默认false。
  • inherited :该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
  • configuration :该插件所需要的特殊配置,在父子项目之间可以覆盖或合并。
  • dependencies :该插件所特有的依赖类库。
  • executions :该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
    • id 唯一标识;
    • goals :执行目标的名称;
    • phase :execution标签要执行的Maven构建生命周期阶段.
    • inherited :该execution是否可被子项目继承;
    • configuration :该execution的其他配置参数;
    • profile:指定该execution标签在哪个profile中生效。

2.4.1、maven生命周期

详见:maven用久后必须了解的phase、goal参数及生命周期概念_maven goal参数-CSDN博客

  • 生命周期有三种,分别是clean,default,sitemaven之pom中的build标签,maven,java
  • 每种生命周期都由多个阶段组成:
    • clean:默认是清除target目录中的所有文件,避免将历史版本打到新的包中造成一些不在预期中的问题。
    • process-resources:将资源文件src/main/resources下的文件复制到target/classes目录中。
    • compile:将src/main/java下的代码编译成 class 文件,也放到target/classes目录中。
    • process-test-resources:将资源文件src/test/resources下的文件复制到target/test-classes目录中。
    • test-compile:将src/test/java下的代码编译成 class 文件,也放到target/test-classes目录中。
    • test:运行单元测试并在target/surefire-reports中生成测试报告。
    • package:将资源文件、class文件、pom文件打包成一个jar包。
    • install:将生成的jar包推送到本地仓库中。
    • deploy:将生成的jar包推送到远程仓库中。
  • 执行构建时,会按照阶段顺序从上到下的执行,但只有绑定了插件目标的阶段才会执行;

2.4、pluginManagement配置 

        通过 pluginManagement 标签管理起来的插件就像 dependencyManagement 一样,子工程使用时可以省略版本号,起到在父工程中统一管理版本的效果。

<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标签存放着几个极少用到的插件:

  • maven-antrun-plugin
  • maven-assembly-plugin
  • maven-dependency-plugin
  • maven-release-plugin

 被springboot-dependenciens管理的插件:

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

  上面是父工程的pom配置,在子pom中,我们只需要做配置即可,不需要版本号: 文章来源地址https://www.toymoban.com/news/detail-850606.html

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

到了这里,关于maven之pom中的build标签的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)

    Java的包管理工具有Maven、Gradle等,其中Maven是一款服务于Java平台的自动化构建工具,把整个过程抽象成一个项目对象模型(Project Object Model,POM),它不仅可以用作包管理,还有许多的 插件 ,可以支持整个项目 的开发、打包、测试及部署 等一系列行为。Gradle是一个基于Apa

    2024年02月09日
    浏览(54)
  • IDEA中maven项目工程中的pom.xml文件变灰且中间有一条横线的处理方法

    错误描述: 不知道是什么原因, pom.xml文件被忽略了,但是之前我也没有过什么误操作。。。  解决方法: 1. File--Settings  2. 搜索 maven,找到 maven 下面的 Ignored Files,将清单中对应项目的pom.xml文件 取消选中 即可; 如果取消选中之后,在 idea 的工作区还是显示 pom.xml 文件中

    2024年02月09日
    浏览(56)
  • Could not find artifact mysql:mysql-connector-java:pom:unknown in central (https://repo.maven.apache

    报错原因:Could not find artifact mysql:mysql-connector-java:pom:unknown in centra 解决方法: 在pom.xml文件中指定你的mysql版本。 dependency         groupIdmysql/groupId         artifactIdmysql-connector-java/artifactId         version5.1.43/version         scoperuntime/scope /dependency

    2024年02月13日
    浏览(59)
  • IDEA报错:Could not find artifact mysql:mysql-connector-java:pom:unknown in central (https://repo.maven

    IDEA 运行报错:Could not find artifact mysql:mysql-connector-java:pom:unknown in central (https://repo.maven.apache.org/maven2) 报错原因:Maven 找不到mysql 解决方案:由于之前IDEA dependency mysql: dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId /dependency 修改:在pom.xml文件中指定你的mysql版本。

    2024年02月13日
    浏览(55)
  • Maven 超级pom、最终有效pom、pom 详解、settings 详解

    在项目的 pom.xml 中不进行任何配置,仍然不影响 Maven 构建的运行,是因为所有的 pom 文件都会继承一个默认的配置,这个配置称为 超级pom ,在自己项目中的配置会覆盖 超级pom 中的配置,未被覆盖的就会继续使用 超级pom 中的配置 超级pom 定义在 maven-model-builder.jar 中,如果想

    2024年02月09日
    浏览(49)
  • pom.xml中resouces标签

    resources 是 maven 在编译项目时将资源文件或者额外的文件赋值到输出目录 (target/classes) 中。通常包括配置文件,属性文件,模板文件, jar包 等。 resouces 中可以包含 resouce 。也就是可以自定义的配置多个资源配置。 使用 directory/ 元素指定项目中 资源文件 所在的目录。 默认的

    2024年01月18日
    浏览(37)
  • 【Maven】Maven 中 pom.xml 文件

    Maven 是一个项目管理工具,可以对 Java 项目进行构建和管理依赖。 本文,我们认识下 pom.xml 文件。POM(Project Object Model, 项目对象模型) 是 Maven 工程的基本工作单位,也是 Maven 的核心。其包含项目的基本信息,用于描述项目如何构建、声明项目依赖等。 POM 是 Project Object Mod

    2024年02月15日
    浏览(38)
  • maven的pom文件

    maven项目中会有pom文件, 当新建项目时候, 需要添加我们需要的依赖包。所以整理了一份比较常用的依赖包的pom,方便以后新建项目或者添加依赖包时copy且快捷。不需要的依赖可以删掉,避免首次远程拉取失败和缩小项目打包大小。 pom结构说明解说如下 properties 定义全局变

    2024年02月08日
    浏览(45)
  • Maven的超级POM

    对于我们创建的一个maven工程,即便我们自己的pom.xm文件中没有明确指定一个父工程(父POM),其实也默认继承了超级POM,就好比JAVA类继承Object类一样。 maven官网关于超级POM的介绍: https://maven.apache.org/pom.html#Inheritance 超级POM文件的位置: 例如,我使用的是maven 3.8.8版本: 打

    2024年02月11日
    浏览(31)
  • Maven 入门实战(2)--POM

    POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,它是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。执行任务或目标时,Maven 会在当前目录中查找并读取 POM,获取所需的配置信息,然后执行目标。  配置说明: 节点

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包