Maven的pom.xml文件结构之Build配置build

From: https://blog.csdn.net/taiyangdao/article/details/52374125

在Maven的pom.xml文件中,Build相关配置包含两个部分,一个是<build>,另一个是<reporting>,这里我们只介绍<build>。


1. 在Maven的pom.xml文件中,存在如下两种<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
      ...
      <!-- "Project Build" contains elements of the BaseBuild set and the Build set-->
      <build>...</build>
     
      <profiles>
        <profile>
          <!-- "Profile Build" contains elements of the BaseBuild set only -->
          <build>...</build>
        </profile>
      </profiles>
    </project>

说明:

一种<build>被称为Project Build,即是<project>的直接子元素。另一种<build>被称为Profile Build,即是<profile>的直接子元素。

Profile Build包含了基本的build元素,而Project Build还包含两个特殊的元素,即各种<...Directory>和<extensions>。


2. Profile Build和Project Build共用的基本build元素

1) 示例如下:

    <build>
      <defaultGoal>install</defaultGoal>
      <directory>${basedir}/target</directory>
      <finalName>${artifactId}-${version}</finalName>
      ...
    </build>

说明:

    defaultGoal,执行构建时默认的goal或phase,如jar:jar或者package等
    directory,构建的结果所在的路径,默认为${basedir}/target目录
    finalName,构建的最终结果的名字,该名字可能在其他plugin中被改变


2) <resources>

资源往往不是代码,无需编译,而是一些properties或XML配置文件,构建过程中会往往会将资源文件从源路径复制到指定的目标路径。

<resources>给出各个资源在Maven项目中的具体路径。示例如下:

      <build>
        ...
        <filters>
          <filter>filters/filter1.properties</filter>
        </filters>
        <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,build过程中涉及的资源文件
        targetPath,资源文件的目标路径
        filtering,构建过程中是否对资源进行过滤,默认false
        directory,资源文件的路径,默认位于${basedir}/src/main/resources/目录下
        includes,一组文件名的匹配模式,被匹配的资源文件将被构建过程处理
        excludes,一组文件名的匹配模式,被匹配的资源文件将被构建过程忽略。同时被includes和excludes匹配的资源文件,将被忽略。
    filters,给出对资源文件进行过滤的属性文件的路径,默认位于${basedir}/src/main/filters/目录下。属性文件中定义若干键值对。在构建过程中,对于资源文件中出现的变量(键),将使用属性文件中该键对应的值替换。
    testResources,test过程中涉及的资源文件,默认位于${basedir}/src/test/resources/目录下。这里的资源文件不会被构建到目标构件中


3) <plugins>

<plugins>给出构建过程中所用到的插件。


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

说明:

    groupId
    artifactId
    version
    extensions,是否加载该插件的扩展,默认false
    inherited,该插件的configuration中的配置是否可以被(继承该POM的其他Maven项目)继承,默认true
    configuration,该插件所需要的特殊配置,在父子项目之间可以覆盖或合并
    dependencies,该插件所特有的依赖类库
    executions,该插件的某个goal(一个插件中可能包含多个goal)的执行方式。一个execution有如下设置:
        id,唯一标识
        goals,要执行的插件的goal(可以有多个),如<goal>run</goal>
        phase,插件的goal要嵌入到Maven的phase中执行,如verify
        inherited,该execution是否可被子项目继承
        configuration,该execution的其他配置参数


4) <pluginManagement>

在<build>中,<pluginManagement>与<plugins>并列,两者之间的关系类似于<dependencyManagement>与<dependencies>之间的关系。<pluginManagement>中也配置<plugin>,其配置参数与<plugins>中的<plugin>完全一致。只是,<pluginManagement>往往出现在父项目中,其中配置的<plugin>往往通用于子项目。子项目中只要在<plugins>中以<plugin>声明该插件,该插件的具体配置参数则继承自父项目中<pluginManagement>对该插件的配置,从而避免在子项目中进行重复配置。


3. Project Build特有的<...Directory>

往往配置在父项目中,供所有父子项目使用。示例如下:

      <build>
        <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
        <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>
        <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
        <outputDirectory>${basedir}/target/classes</outputDirectory>
        <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
        ...
      </build>
    </project>

目录可以使用绝对路径,如示例所示。如果使用相对路径,则所有的相对路径都是在${basedir}目录下。


4. Project Build特有的<extensions>

<extensions>是执行构建过程中可能用到的其他工具,在执行构建的过程中被加入到classpath中。

也可以通过<extensions>激活构建插件,从而改变构建的过程。

通常,通过<extensions>给出通用插件的一个具体实现,用于构建过程。

<extensions>的使用示例如下:

      <build>
        ...
        <extensions>
          <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ftp</artifactId>
            <version>1.0-alpha-3</version>
          </extension>
        </extensions>
        ...
      </build>
    </project>
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FineUI 将不再内置 ExtJS (严格遵守 ExtJS 的开源规则)

从下个版本起&#xff0c;FineUI 将不再内置 ExtJS &#xff0c;不过我会提供说明如何使用 ExtJS&#xff08;并单独提供精简版的 ExtJS 包供论坛用户下载&#xff09;&#xff0c;现有的程序升级到新版本将不受影响&#xff08;只需要将精简版的 extjs 文件夹拷贝到程序根目录…

Maven开发笔记(四)—— Maven中plugins和pluginManagement

From: https://www.jianshu.com/p/49acf1246eff 1.plugins和pluginManagement的区别概述 plugins 和 pluginManagement 的区别&#xff0c;和我们前面研究过的 dependencies 和 dependencyManagement 的区别是非常类似的。plugins 下的 plugin 是真实使用的&#xff0c;而 pl…

Html代码seo优化最佳布局实例讲解

搜索引擎对html代码是非常优化的&#xff0c;所以html的优化是做好推广的第一步。一个符合seo规则的代码大体如下界面所示。 1、<!–木庄网络博客–> 这个东西是些页面注释的&#xff0c;可以在这里加我的“木庄网络博客”&#xff0c;但过多关键字可能被搜索引擎惩罚&a…

基于struts2,hibernate的小javaweb项目

19:47:49 这是截图 闲话不说 就开始了 web-xml&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <web-app version"2.5" xmlns"http://java.sun.com/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-in…

YAML快速入门

From: https://www.jianshu.com/p/97222440cd08 我们学习Java&#xff0c;都是先介绍properties文件&#xff0c;使用properties文件配合Properties对象能够很方便的适用于应用配置上。然后在引入XML的时候&#xff0c;我们介绍properties格式在表现层级关系和结构关系的时候&…

MySql的用户权限

用户管理 MySQL数据库中的表与其他任何关系表没有区别&#xff0c;都可以通过典型的SQL命令修改其结构和数据。可以使用GRANT和REVOKE命令。通过这些命令&#xff0c;可以创建和禁用用户&#xff0c;可以在线授予和撤回用户访问权限。在5.0版本中增加了两个新命令&#xff1a;C…

.yaml 文件格式简介

From: https://www.cnblogs.com/wxmdevelop/p/7341292.html YAML 的意思其实是&#xff1a;"Yet Another Markup Language"&#xff08;仍是一种置标语言&#xff09;的缩写。 功能 YAML的语法和其他高阶语言类似&#xff0c;并且可以简单表达清单、散列表&#x…

jQuery与JS的区别,以及jQuery的基础语法

*在使用jQuery时&#xff0c;要在页面最上端加上 <script src"../jquery-1.11.2.min.js"></script> 看一下js与jQuery的区别&#xff1a; JS是这样使用的&#xff1a; <script type"text/javascript">根据ID取元素,取到的是具体的元素va…

sql语句中的时间查询

一般来说&#xff0c;我们在mysql数据库纪录数据时间时&#xff0c;都会选择datatime类型&#xff0c;这样时间可以精确到秒。但随之而来的一个问题是&#xff0c;当我们要取得某一段时间内的数据内容会有一些时间转换上的麻烦&#xff0c;例如我们要取得2002年3月2日到2003年7…

SnakeYaml快速入门

From: https://www.jianshu.com/p/d8136c913e52 在YAML快速入门[https://www.jianshu.com/p/97222440cd08]中&#xff0c;我们已经简单介绍了YAML的语法&#xff0c;本节中主要介绍YAML的配置读取。 目前有很多可以生成和解析YAML的第三方工具&#xff0c;常见的&#xff0c;…

CSS的一些零碎总结

1、CSS 伪元素用于向某些选择器设置特殊效果&#xff08;用来当作一个东西的&#xff0c;跟一个元素差不多&#xff0c;但不是元素&#xff09;。 ① :frist-line伪元素&#xff1a;用于向文本首行设置特殊样式&#xff0c;但是只能用于块级元素。 以下属性可应用于 “ frist-l…

有源代码的iphone项目

2019独角兽企业重金招聘Python工程师标准>>> http://blog.joomla.org.tw/iphone-ipad/104-iphone.html 學習和利用現成的資源是很重要的&#xff0c;以下列出有原始碼可下載的iPhone/iPod程式&#xff0c;這邊收集的是以已經放到App Store上的程式為主&#xff0c;…

匿名函数与闭包

<!DOCTYPE html><html lang"zh-CN"><head> <meta charset"UTF-8"> <title>闭包.html</title> <style> </style> <script src"jquery-1.7.2.min.js"></script> <script type&quo…

Content Security Policy 入门教程

From: http://www.ruanyifeng.com/blog/2016/09/csp.html 跨域脚本攻击 XSS 是最常见、危害最大的网页安全漏洞。 为了防止它们&#xff0c;要采取很多编程措施&#xff0c;非常麻烦。很多人提出&#xff0c;能不能根本上解决问题&#xff0c;浏览器自动禁止外部注入恶意脚本&…

windows编程基础

说明&#xff1a;只供学习交流&#xff0c;转载请注明出处 windows编程基础 &#xff08;1&#xff09;&#xff1a;API与SDK 我们在编写标准C程序的时候&#xff0c;经常会调用各种库函数来辅助完成某些功能&#xff1a;初学者使用得最多的库函数就是printf了&#xff0c;这些…

前端安全配置之Content-Security-Policy(csp)

From: https://www.cnblogs.com/heyuqing/p/6215761.html 什么是CSP CSP全称Content Security Policy ,可以直接翻译为内容安全策略,说白了,就是为了页面内容安全而制定的一系列防护策略. 通过CSP所约束的的规责指定可信的内容来源&#xff08;这里的内容可以指脚本、图片、i…

springboot跨域配置

From: https://www.cnblogs.com/nananana/p/8492185.html 前言&#xff1a; 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时&#xff0c;一个资源会发起一个跨域HTTP请求(Cross-site HTTP request)。 比如说&#xff0c;域名A ( http://domaina.example …

字符函数

getchar: 从stdio流中读字符 a getchar(); fputs:指定的文件写入一个字符串(不自动写入字符串结束标记符\0) fgets:从文件结构体指针stream中读取数据&#xff0c;每次读取一行。读取的数据保存在buf指向的字符数组中&#xff0c;每次最多读取 bufsize-1个字符…

SpringBoot配置Cors解决跨域请求问题

From: https://www.cnblogs.com/yuansc/p/9076604.html 一、同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能&#xff0c;不同源的客户端脚本在没有明确授权的情况下&#xff0c;不能读写对方资源。 同源策略是浏览器安全的基石。 什么是源 源[origin]就…

Server Develop (三) 多进程实现C/S

多进程实现C/S 把上次的多进程简单的添加一个fork就可以实现一个简单的多进程服务器。具体进程创建和使用的函数&#xff0c;有时间得总结一下了&#xff5e;&#xff5e;&#xff5e;&#xff5e; if(fork()0){char buffer[1024];strcpy(buffer, "this is server! welcom…