转自: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
相关推荐
Maven通过一个叫做pom.xml的项目对象模型文件来配置项目构建的各个方面,其中<build>标签是Maven构建配置的核心部分,它定义了整个构建生命周期中需要执行的指令和任务。 Maven构建包括编译代码、执行测试、打包...
本篇文章将详细探讨如何使用Maven构建一个自定义标签库,并在Web应用中使用它。 自定义标签库是JSP 2.0引入的一个特性,它允许开发者创建自己的标签,这些标签可以封装复杂的逻辑或重复使用的代码,从而提高代码的...
1. 添加依赖:在项目的`pom.xml`文件中,你可以通过`<dependencies>`标签添加项目所需的外部库,Maven会自动下载并管理这些依赖。 2. 构建项目:在Eclipse中,右键点击项目,选择`Run As` > `Maven Build...`,在...
例如,如果你希望将本地仓库改为`D:\Maven\repository`,则需要修改`settings.xml`中的`<localRepository>`标签。 ```xml <localRepository>D:/Maven/repository ``` ### 五、常用Maven命令 - **install**: 编译...
4. **整合流程**:在Maven的`<build>`标签下,添加`<plugins>`,配置TypeScript编译插件,使其在特定生命周期阶段执行。例如,可以在`prepare-package`阶段编译TypeScript代码。 5. **资源处理**:将编译后的...
至于标签"maven apache java",它们分别代表了Maven、Apache开源组织和Java编程语言。Maven是由Apache软件基金会维护的,它是Java世界中最流行的构建工具之一,主要用于Java项目的构建和管理。 在压缩包文件名称...
Maven通过POM中的`<dependencies>`标签管理项目所需的库。它会自动下载这些依赖及其传递性依赖,避免了库冲突问题。 3. **仓库(Repository)** Maven使用仓库系统来存储和检索依赖。默认本地仓库位于用户主目录...
1. **配置`<build>`部分**:在`pom.xml`的`<build>`标签内,我们可以添加一个`<resources>`标签来指定资源文件的处理方式。对于类文件,我们可以设置`<directory>`属性为`src/main/java`,这样Maven就会在这个路径下...
在标签 "源码" 和 "工具" 的提示下,我们可以理解到这个话题可能涉及具体的代码示例和使用 Maven 进行项目构建时所需的工具。在实际操作中,开发者需要根据项目需求选择合适的插件,配置 Maven POM.xml 文件,并可能...
例如,设置标签来声明项目依赖,<build>标签用于配置构建过程,如源码目录、输出目录、资源过滤等。 五、Maven的继承与聚合 Maven支持项目间的继承和聚合。继承允许子项目共享父项目的配置,减少了重复代码。聚合则...
在这个例子中,`version`标签定义了插件的版本,可以根据实际需求选择。`contextPath`设置Web应用的上下文路径,`scanIntervalSeconds`表示Maven将每隔多少秒检查源代码变化并自动重启Jetty。 4. 多版本的maven-...
在Maven中,你可以通过`<build><plugins>`标签下的`<plugin>`元素来引用并执行自定义插件,就像使用官方插件一样。 总结起来,Maven插件是Maven生态系统的核心组件,它们增强了Maven的功能,使得项目构建更加灵活和...
Maven插件的配置通常在POM文件的`<build>`标签下,通过`<plugins>`标签定义。例如,要修改`maven-compiler-plugin`的编译源码版本,可以在POM中添加如下配置: ```xml <build> <groupId>org.apache.maven....
3. **依赖管理**: Maven通过`<dependencies>`标签管理项目所需库,自动下载并管理依赖关系,避免了类库冲突的问题。 4. **生命周期与构建阶段**: Maven拥有丰富的生命周期,如`clean`、`compile`、`test`、`install...
3. **构建设置**:在 `Build Configuration` 中,你可以配置构建时使用的 Maven 命令行参数,如 `-DskipTests` 来跳过测试。 4. **Maven 插件**:STS 提供了内置的 Maven 插件支持,可以直接在 IDE 内部执行 Maven ...
Maven的依赖管理是其核心功能之一。通过在POM文件中声明项目依赖,Maven会自动下载并管理这些依赖的版本。Maven遵循“最接近原则”来解决依赖冲突,即优先使用项目直接声明的依赖版本,而非间接依赖的版本。此外,还...
Maven的本地仓库是Maven系统的核心组件之一,它存储着项目所需的各类依赖库,包括JAR包。当你在开发过程中引用了一个库,Maven会尝试从中央仓库下载该库到本地仓库,以便后续的编译和构建步骤能够访问到。 本地仓库...
- Maven自动管理项目依赖关系,通过POM中的标签声明,它会自动下载并解决依赖冲突。 4. **插件系统** - Maven插件执行特定的任务,如编译代码、运行测试、打包应用等。通过<build>部分配置。 5. **Maven的配置**...
Maven插件通过`<build><plugins>`标签进行配置,每个插件有自己的目标(goal),如`maven-compiler-plugin`用于编译,`maven-surefire-plugin`用于测试。 七、Maven的父POM与多模块项目 对于大型项目,Maven支持...