`

maven之build标签

 
阅读更多

转自:https://blog.csdn.net/u010010606/article/details/79727438 

 

build标签作用

maven是什么,用通俗的话来将,maven能帮你构建工程,管理jar包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目

使用maven构建的项目均可以直接使用maven build完成项目的编译测试打包,无需额外配置

Maven是通过pom.xml来执行任务的,其中的build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成。当然plugin配置不是必须的,比如默认情况下,结果打成jar包的话Maven 会绑定以下几个插件来完成基本操作。


 

即在没有配置的情况下,执行mvn clean install时,maven会调用默认的plugin来完成编译打包操作,具体来讲,执行mvn clean install时会执行

maven-clean-plugin:2.5:clean (default-clean)

maven-resources-plugin:2.6:resources (default-resources)

maven-compiler-plugin:3.1:compile (default-compile)

maven-resources-plugin:2.6:testResources (default-testResources)

maven-compiler-plugin:3.1:testCompile (default-testCompile)

maven-surefire-plugin:2.12.4:test (default-test)

maven-jar-plugin:2.4:jar (default-jar)

maven-install-plugin:2.4:install (default-install)

等plugin

 

配置特殊plugin

如果有需要可以针对各个 plugin 进行特殊配置,需要在pom.xml中的<plugins>标签中显示指定 plugin 和 属性配置。

 

 

如上配置了maven-compiler-plugin的版本和编译时使用的jdk版本

 

POM.XML的build标签

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

1.pom.xml中的两种build

在Maven的pom.xml文件中,存在如下两种<build>:

 

 

说明:

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

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

2.Profile Build和Project Build的共有元素

1) 共用的基本build元素

示例如下:

 

 

说明:

defaultGoal,执行构建时默认的goal或phase,如jar:jar或者package等

directory,构建的结果所在的路径,默认为${basedir}/target目录

finalName,构建的最终结果的名字,该名字可能在其他plugin中被改变

2) <resources>

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

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

 

 

说明:

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>给出构建过程中所用到的插件。

 

 

说明:

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>

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

 

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

 

4. Project Build特有的<extensions>

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

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

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

<extensions>的使用示例如下:

 

 

 

==================================================================

****************************** maven默认的输入输出目录 ************************************

==================================================================

 

构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。

 

src/main/java和src/test/java 

这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。

src/main/resouces和src/test/resources

这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。

 

当是web项目时,会在target下生成myproject目录,myproject是你的项目名

src/main/webapps

这个目录中的文件会被复制到target/myProject目录中

target/classes

默认会把这个目录中的所有内容复制到target/myProject/WEB-INF/classes目录中

Dependency

默认会将项目的依赖复制到target/myProject/WEB-INF/lib

 

  • 大小: 21.8 KB
  • 大小: 7.9 KB
  • 大小: 27.7 KB
  • 大小: 10.2 KB
  • 大小: 24.3 KB
  • 大小: 20.3 KB
  • 大小: 20.6 KB
  • 大小: 11.1 KB
分享到:
评论

相关推荐

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

    Maven通过一个叫做pom.xml的项目对象模型文件来配置项目构建的各个方面,其中&lt;build&gt;标签是Maven构建配置的核心部分,它定义了整个构建生命周期中需要执行的指令和任务。 Maven构建包括编译代码、执行测试、打包...

    自定义标签(maven)

    本篇文章将详细探讨如何使用Maven构建一个自定义标签库,并在Web应用中使用它。 自定义标签库是JSP 2.0引入的一个特性,它允许开发者创建自己的标签,这些标签可以封装复杂的逻辑或重复使用的代码,从而提高代码的...

    eclipse+maven环境搭建.zip

    1. 添加依赖:在项目的`pom.xml`文件中,你可以通过`&lt;dependencies&gt;`标签添加项目所需的外部库,Maven会自动下载并管理这些依赖。 2. 构建项目:在Eclipse中,右键点击项目,选择`Run As` &gt; `Maven Build...`,在...

    Windoiws的maven3.8.8

    例如,如果你希望将本地仓库改为`D:\Maven\repository`,则需要修改`settings.xml`中的`&lt;localRepository&gt;`标签。 ```xml &lt;localRepository&gt;D:/Maven/repository ``` ### 五、常用Maven命令 - **install**: 编译...

    typescript教程与maven整合

    4. **整合流程**:在Maven的`&lt;build&gt;`标签下,添加`&lt;plugins&gt;`,配置TypeScript编译插件,使其在特定生命周期阶段执行。例如,可以在`prepare-package`阶段编译TypeScript代码。 5. **资源处理**:将编译后的...

    maven plugin打包下载

    在Maven的`pom.xml`文件中,我们通过`&lt;build&gt;`标签的`&lt;plugins&gt;`子标签来添加和配置Maven Plugin。例如,添加`maven-jar-plugin`以打包Java应用: ```xml &lt;build&gt; &lt;groupId&gt;org.apache.maven.plugins ...

    apache-maven-3.8.4d

    至于标签"maven apache java",它们分别代表了Maven、Apache开源组织和Java编程语言。Maven是由Apache软件基金会维护的,它是Java世界中最流行的构建工具之一,主要用于Java项目的构建和管理。 在压缩包文件名称...

    Maven打包,指定classes路径

    1. **配置`&lt;build&gt;`部分**:在`pom.xml`的`&lt;build&gt;`标签内,我们可以添加一个`&lt;resources&gt;`标签来指定资源文件的处理方式。对于类文件,我们可以设置`&lt;directory&gt;`属性为`src/main/java`,这样Maven就会在这个路径下...

    apache-maven-3.6.3安装包

    Maven通过POM中的`&lt;dependencies&gt;`标签管理项目所需的库。它会自动下载这些依赖及其传递性依赖,避免了库冲突问题。 3. **仓库(Repository)** Maven使用仓库系统来存储和检索依赖。默认本地仓库位于用户主目录...

    maven pdf

    在标签 "源码" 和 "工具" 的提示下,我们可以理解到这个话题可能涉及具体的代码示例和使用 Maven 进行项目构建时所需的工具。在实际操作中,开发者需要根据项目需求选择合适的插件,配置 Maven POM.xml 文件,并可能...

    尚硅谷Maven课程笔记代码资源

    例如,设置标签来声明项目依赖,&lt;build&gt;标签用于配置构建过程,如源码目录、输出目录、资源过滤等。 五、Maven的继承与聚合 Maven支持项目间的继承和聚合。继承允许子项目共享父项目的配置,减少了重复代码。聚合则...

    maven集成jetty所需jar包maven-jetty-plugin,多版本

    在这个例子中,`version`标签定义了插件的版本,可以根据实际需求选择。`contextPath`设置Web应用的上下文路径,`scanIntervalSeconds`表示Maven将每隔多少秒检查源代码变化并自动重启Jetty。 4. 多版本的maven-...

    maven插件的demo

    在Maven中,你可以通过`&lt;build&gt;&lt;plugins&gt;`标签下的`&lt;plugin&gt;`元素来引用并执行自定义插件,就像使用官方插件一样。 总结起来,Maven插件是Maven生态系统的核心组件,它们增强了Maven的功能,使得项目构建更加灵活和...

    Maven学习必要插件

    Maven插件的配置通常在POM文件的`&lt;build&gt;`标签下,通过`&lt;plugins&gt;`标签定义。例如,要修改`maven-compiler-plugin`的编译源码版本,可以在POM中添加如下配置: ```xml &lt;build&gt; &lt;groupId&gt;org.apache.maven....

    Intellij IDEA中使用maven filter遇到的问题

    1. **配置pom.xml**:在`&lt;build&gt;&lt;resources&gt;`部分添加`&lt;resource&gt;`标签,并配置`&lt;filtering&gt;true&lt;/filtering&gt;`,这样Maven就会处理这个资源目录下的文件。 ```xml &lt;build&gt; &lt;directory&gt;src/main/resources ...

    maven的安装文件以及集成TOMCAT、eclipse的教程

    3. **依赖管理**: Maven通过`&lt;dependencies&gt;`标签管理项目所需库,自动下载并管理依赖关系,避免了类库冲突的问题。 4. **生命周期与构建阶段**: Maven拥有丰富的生命周期,如`clean`、`compile`、`test`、`install...

    maven3.3.9个和maven配置步骤

    3. **构建设置**:在 `Build Configuration` 中,你可以配置构建时使用的 Maven 命令行参数,如 `-DskipTests` 来跳过测试。 4. **Maven 插件**:STS 提供了内置的 Maven 插件支持,可以直接在 IDE 内部执行 Maven ...

    maven及其maven本地仓库

    Maven的依赖管理是其核心功能之一。通过在POM文件中声明项目依赖,Maven会自动下载并管理这些依赖的版本。Maven遵循“最接近原则”来解决依赖冲突,即优先使用项目直接声明的依赖版本,而非间接依赖的版本。此外,还...

    maven的本地仓库jar包

    Maven的本地仓库是Maven系统的核心组件之一,它存储着项目所需的各类依赖库,包括JAR包。当你在开发过程中引用了一个库,Maven会尝试从中央仓库下载该库到本地仓库,以便后续的编译和构建步骤能够访问到。 本地仓库...

Global site tag (gtag.js) - Google Analytics