maven provided_Maven 教程之 pom.xml 详解
点击上方“Java知音”,选择“置顶公众号”
技术文章第一时间送达!
作者:dunwu
https://github.com/dunwu/blog
推荐阅读(点击即可跳转阅读)
1. SpringBoot内容聚合
2. 面试题内容聚合
3. 设计模式内容聚合
4. Mybatis内容聚合
5. 多线程内容聚合
简介
什么是 pom?
POM 是 Project Object Model 的缩写,即项目对象模型。
pom.xml 就是 maven 的配置文件,用以描述项目的各种信息。
pom 配置一览
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0modelVersion>
<groupId>...groupId> <artifactId>...artifactId> <version>...version> <packaging>...packaging> <dependencies>...dependencies> <parent>...parent> <dependencyManagement>...dependencyManagement> <modules>...modules> <properties>...properties>
<build>...build> <reporting>...reporting>
<name>...name> <description>...description> <url>...url> <inceptionYear>...inceptionYear> <licenses>...licenses> <organization>...organization> <developers>...developers> <contributors>...contributors>
<issueManagement>...issueManagement> <ciManagement>...ciManagement> <mailingLists>...mailingLists> <scm>...scm> <prerequisites>...prerequisites> <repositories>...repositories> <pluginRepositories>...pluginRepositories> <distributionManagement>...distributionManagement> <profiles>...profiles>project>
基本配置
project -
project
是 pom.xml 中描述符的根。modelVersion -
modelVersion
指定 pom.xml 符合哪个版本的描述符。maven 2 和 3 只能为 4.0.0。
一般 jar 包被识别为: groupId:artifactId:version
的形式。
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0modelVersion>
<groupId>org.codehaus.mojogroupId> <artifactId>my-projectartifactId> <version>1.0version> <packaging>warpackaging>project>
maven 坐标
在 maven 中,根据 groupId
、artifactId
、version
组合成 groupId:artifactId:version
来唯一识别一个 jar 包。
groupId - 团体、组织的标识符。团体标识的约定是,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。一般对应着 java 的包结构。
artifactId - 单独项目的唯一标识符。比如我们的 tomcat、commons 等。不要在 artifactId 中包含点号(.)。
version - 一个项目的特定版本。
maven 有自己的版本规范,一般是如下定义 major version、minor version、incremental version-qualifier ,比如 1.2.3-beta-01。要说明的是,maven 自己判断版本的算法是 major、minor、incremental 部分用数字比较,qualifier 部分用字符串比较,所以要小心 alpha-2 和 alpha-15 的比较关系,最好用 alpha-02 的格式。
maven 在版本管理时候可以使用几个特殊的字符串 SNAPSHOT、LATEST、RELEASE。比如
1.0-SNAPSHOT
。各个部分的含义和处理逻辑如下说明:SNAPSHOT - 这个版本一般用于开发过程中,表示不稳定的版本。
LATEST - 指某个特定构件的最新发布,这个发布可能是一个发布版,也可能是一个 snapshot 版,具体看哪个时间最后。
RELEASE :指最后一个发布版。
packaging - 项目的类型,描述了项目打包后的输出,默认是 jar。常见的输出类型为:pom, jar, maven-plugin, ejb, war, ear, rar, par。
依赖配置
dependencies
<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"> ... <dependencies> <dependency> <groupId>org.apache.mavengroupId> <artifactId>maven-embedderartifactId> <version>2.0version> <type>jartype> <scope>testscope> <optional>trueoptional> <exclusions> <exclusion> <groupId>org.apache.mavengroupId> <artifactId>maven-coreartifactId> exclusion> exclusions> dependency> ... dependencies> ...project>
groupId, artifactId, version - 和基本配置中的
groupId
、artifactId
、version
意义相同。type - 对应
packaging
的类型,如果不使用type
标签,maven 默认为 jar。scope - 此元素指的是任务的类路径(编译和运行时,测试等)以及如何限制依赖关系的传递性。有 5 种可用的限定范围:
compile - 如果没有指定
scope
标签,maven 默认为这个范围。编译依赖关系在所有 classpath 中都可用。此外,这些依赖关系被传播到依赖项目。provided - 与 compile 类似,但是表示您希望 jdk 或容器在运行时提供它。它只适用于编译和测试 classpath,不可传递。
runtime - 此范围表示编译不需要依赖关系,而是用于执行。它是在运行时和测试 classpath,但不是编译 classpath。
test - 此范围表示正常使用应用程序不需要依赖关系,仅适用于测试编译和执行阶段。它不是传递的。
system - 此范围与 provided 类似,除了您必须提供明确包含它的 jar。该 artifact 始终可用,并且不是在仓库中查找。
systemPath - 仅当依赖范围是系统时才使用。否则,如果设置此元素,构建将失败。该路径必须是绝对路径,因此建议使用
propertie
来指定特定的路径,如\$ {java.home} / lib
。由于假定先前安装了系统范围依赖关系,maven 将不会检查项目的仓库,而是检查库文件是否存在。如果没有,maven 将会失败,并建议您手动下载安装。optional -
optional
让其他项目知道,当您使用此项目时,您不需要这种依赖性才能正常工作。exclusions - 包含一个或多个排除元素,每个排除元素都包含一个表示要排除的依赖关系的
groupId
和artifactId
。与可选项不同,可能或可能不会安装和使用,排除主动从依赖关系树中删除自己。
parent
maven 支持继承功能。子 POM 可以使用 parent
指定父 POM ,然后继承其配置。
<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"> <modelVersion>4.0.0modelVersion>
<parent> <groupId>org.codehaus.mojogroupId> <artifactId>my-parentartifactId> <version>2.0version> <relativePath>../my-parentrelativePath> parent>
<artifactId>my-projectartifactId>project>
relativePath - 注意
relativePath
元素。在搜索本地和远程存储库之前,它不是必需的,但可以用作 maven 的指示符,以首先搜索给定该项目父级的路径。
dependencyManagement
dependencyManagement
是表示依赖 jar 包的声明。即你在项目中的 dependencyManagement
下声明了依赖,maven 不会加载该依赖,dependencyManagement
声明可以被子 POM 继承。
dependencyManagement
的一个使用案例是当有父子项目的时候,父项目中可以利用 dependencyManagement
声明子项目中需要用到的依赖 jar 包,之后,当某个或者某几个子项目需要加载该依赖的时候,就可以在子项目中 dependencies
节点只配置 groupId
和 artifactId
就可以完成依赖的引用。
dependencyManagement
主要是为了统一管理依赖包的版本,确保所有子项目使用的版本一致,类似的还有plugins
和pluginManagement
。
modules
子模块列表。
<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"> <modelVersion>4.0.0modelVersion>
<groupId>org.codehaus.mojogroupId> <artifactId>my-parentartifactId> <version>2.0version> <packaging>pompackaging>
<modules> <module>my-projectmodule> <module>another-projectmodule> <module>third-project/pom-example.xmlmodule> modules>project>
properties
属性列表。定义的属性可以在 pom.xml 文件中任意处使用。使用方式为 ${propertie}
。
<project> ... <properties> <maven.compiler.source>1.7<maven.compiler.source> <maven.compiler.target>1.7<maven.compiler.target> <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding> properties> ...project>
构建配置
build
build 可以分为 "project build" 和 "profile 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"> ...
<build>...build>
<profiles> <profile>
<build>...build> profile> profiles>project>
基本构建配置:
<build> <defaultGoal>installdefaultGoal> <directory>${basedir}/targetdirectory> <finalName>${artifactId}-${version}finalName> <filters> <filter>filters/filter1.propertiesfilter> filters> ...build>
defaultGoal : 默认执行目标或阶段。如果给出了一个目标,它应该被定义为它在命令行中(如 jar:jar)。如果定义了一个阶段(如安装),也是如此。
directory :构建时的输出路径。默认为:${basedir}/target
。
finalName :这是项目的最终构建名称(不包括文件扩展名,例如:my-project-1.0.jar)
filter :定义 * .properties
文件,其中包含适用于接受其设置的资源的属性列表(如下所述)。换句话说,过滤器文件中定义的“name = value”对在代码中替换\$ {name}
字符串。
resources
资源的配置。资源文件通常不是代码,不需要编译,而是在项目需要捆绑使用的内容。
<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"> <build> ... <resources> <resource> <targetPath>META-INF/plexustargetPath> <filtering>falsefiltering> <directory>${basedir}/src/main/plexusdirectory> <includes> <include>configuration.xmlinclude> includes> <excludes> <exclude>**/*.propertiesexclude> excludes> resource> resources> <testResources> ... testResources> ... build>project>
resources: 资源元素的列表,每个资源元素描述与此项目关联的文件和何处包含文件。
targetPath: 指定从构建中放置资源集的目录结构。目标路径默认为基本目录。将要包装在 jar 中的资源的通常指定的目标路径是 META-INF。
filtering: 值为 true 或 false。表示是否要为此资源启用过滤。请注意,该过滤器
* .properties
文件不必定义为进行过滤 - 资源还可以使用默认情况下在 POM 中定义的属性(例如\$ {project.version}),并将其传递到命令行中“-D”标志(例如,“-Dname = value”)或由 properties 元素显式定义。过滤文件覆盖上面。directory: 值定义了资源的路径。构建的默认目录是
${basedir}/src/main/resources
。includes: 一组文件匹配模式,指定目录中要包括的文件,使用*作为通配符。
excludes: 与
includes
类似,指定目录中要排除的文件,使用*作为通配符。注意:如果include
和exclude
发生冲突,maven 会以exclude
作为有效项。testResources:
testResources
与resources
功能类似,区别仅在于:testResources
指定的资源仅用于 test 阶段,并且其默认资源目录为:${basedir}/src/test/resources
。
plugins
<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"> <build> ... <plugins> <plugin> <groupId>org.apache.maven.pluginsgroupId> <artifactId>maven-jar-pluginartifactId> <version>2.6version> <extensions>falseextensions> <inherited>trueinherited> <configuration> <classifier>testclassifier> configuration> <dependencies>...dependencies> <executions>...executions> plugin> plugins> build>project>
groupId, artifactId, version :和基本配置中的
groupId
、artifactId
、version
意义相同。extensions :值为 true 或 false。是否加载此插件的扩展名。默认为 false。
inherited :值为 true 或 false。这个插件配置是否应该适用于继承自这个插件的 POM。默认值为 true。
configuration - 这是针对个人插件的配置,这里不扩散讲解。
dependencies :这里的
dependencies
是插件本身所需要的依赖。executions :需要记住的是,插件可能有多个目标。每个目标可能有一个单独的配置,甚至可能将插件的目标完全绑定到不同的阶段。执行配置插件的目标的执行。
id: 执行目标的标识。
goals: 像所有多元化的 POM 元素一样,它包含单个元素的列表。在这种情况下,这个执行块指定的插件目标列表。
phase: 这是执行目标列表的阶段。这是一个非常强大的选项,允许将任何目标绑定到构建生命周期中的任何阶段,从而改变 maven 的默认行为。
inherited: 像上面的继承元素一样,设置这个 false 会阻止 maven 将这个执行传递给它的子代。此元素仅对父 POM 有意义。
configuration: 与上述相同,但将配置限制在此特定目标列表中,而不是插件下的所有目标。
<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"> ... <build> <plugins> <plugin> <artifactId>maven-antrun-pluginartifactId> <version>1.1version> <executions> <execution> <id>echodirid> <goals> <goal>rungoal> goals> <phase>verifyphase> <inherited>falseinherited> <configuration> <tasks> <echo>Build Dir: ${project.build.directory}echo> tasks> configuration> execution> executions>
plugin> plugins> build>project>
pluginManagement
与 dependencyManagement
很相似,在当前 POM 中仅声明插件,而不是实际引入插件。子 POM 中只配置 groupId
和 artifactId
就可以完成插件的引用,且子 POM 有权重写 pluginManagement 定义。
它的目的在于统一所有子 POM 的插件版本。
directories
<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"> ... <build> <sourceDirectory>${basedir}/src/main/javasourceDirectory> <scriptSourceDirectory>${basedir}/src/main/scriptsscriptSourceDirectory> <testSourceDirectory>${basedir}/src/test/javatestSourceDirectory> <outputDirectory>${basedir}/target/classesoutputDirectory> <testOutputDirectory>${basedir}/target/test-classestestOutputDirectory> ... build>project>
目录元素集合存在于 build
元素中,它为整个 POM 设置了各种目录结构。由于它们在配置文件构建中不存在,所以这些不能由配置文件更改。
如果上述目录元素的值设置为绝对路径(扩展属性时),则使用该目录。否则,它是相对于基础构建目录:${basedir}
。
extensions
扩展是在此构建中使用的 artifacts 的列表。它们将被包含在运行构建的 classpath 中。它们可以启用对构建过程的扩展(例如为 Wagon 传输机制添加一个 ftp 提供程序),并使活动的插件能够对构建生命周期进行更改。简而言之,扩展是在构建期间激活的 artifacts。扩展不需要实际执行任何操作,也不包含 Mojo。因此,扩展对于指定普通插件接口的多个实现中的一个是非常好的。
<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"> ... <build> ... <extensions> <extension> <groupId>org.apache.maven.wagongroupId> <artifactId>wagon-ftpartifactId> <version>1.0-alpha-3version> extension> extensions> ... build>project>
reporting
报告包含特定针对 site
生成阶段的元素。某些 maven 插件可以生成 reporting
元素下配置的报告,例如:生成 javadoc 报告。reporting
与 build
元素配置插件的能力相似。明显的区别在于:在执行块中插件目标的控制不是细粒度的,报表通过配置 reportSet
元素来精细控制。
而微妙的区别在于 reporting
元素下的 configuration
元素可以用作 build
下的 configuration
,尽管相反的情况并非如此( build
下的 configuration
不影响 reporting
元素下的 configuration
)。
另一个区别就是 plugin
下的 outputDirectory
元素。在报告的情况下,默认输出目录为 ${basedir}/target/site
。
<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"> ... <reporting> <plugins> <plugin> ... <reportSets> <reportSet> <id>sunlinkid> <reports> <report>javadocreport> reports> <inherited>trueinherited> <configuration> <links> <link>http://java.sun.com/j2se/1.5.0/docs/api/link> links> configuration> reportSet> reportSets> plugin> plugins> reporting> ...project>
项目信息
项目信息相关的这部分标签都不是必要的,也就是说完全可以不填写。
它的作用仅限于描述项目的详细信息。
下面的示例是项目信息相关标签的清单:
<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"> ...
<name>maven-notesname>
<description>maven 学习笔记description>
<url>https://github.com/dunwu/maven-notesurl>
<inceptionYear>2017inceptionYear>
<licenses> <license> <name>Apache License, Version 2.0name> <url>https://www.apache.org/licenses/LICENSE-2.0.txturl> <distribution>repodistribution> <comments>A business-friendly OSS licensecomments> license> licenses>
<organization> <name>...name> <url>...url> organization>
<developers> <developer> <id>victorid> <name>Zhang Pengname> <email>forbreak at 163.comemail> <url>https://github.com/dunwuurl> <organization>...organization> <organizationUrl>...organizationUrl> <roles> <role>architectrole> <role>developerrole> roles> <timezone>+8timezone> <properties>...properties> developer> developers>
<contributors> <contributor>
contributor> contributors>
...project>
这部分标签都非常简单,基本都能做到顾名思义,且都属于可有可无的标签,所以这里仅简单介绍一下:
name - 项目完整名称
description - 项目描述
url - 一般为项目仓库的 host
inceptionYear - 开发年份
licenses - 开源协议
organization - 项目所属组织信息
developers - 项目开发者列表
contributors - 项目贡献者列表, 的子标签和 的完全相同。
环境配置
issueManagement
这定义了所使用的缺陷跟踪系统(Bugzilla,TestTrack,ClearQuest 等)。虽然没有什么可以阻止插件使用这些信息的东西,但它主要用于生成项目文档。
<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"> ... <issueManagement> <system>Bugzillasystem> <url>http://127.0.0.1/bugzilla/url> issueManagement> ...project>
ciManagement
CI 构建系统配置,主要是指定通知机制以及被通知的邮箱。
<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"> ... <ciManagement> <system>continuumsystem> <url>http://127.0.0.1:8080/continuumurl> <notifiers> <notifier> <type>mailtype> <sendOnError>truesendOnError> <sendOnFailure>truesendOnFailure> <sendOnSuccess>falsesendOnSuccess> <sendOnWarning>falsesendOnWarning> <configuration><address>continuum@127.0.0.1address>configuration> notifier> notifiers> ciManagement> ...project>
mailingLists
邮件列表
<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"> ... <mailingLists> <mailingList> <name>User Listname> <subscribe>user-subscribe@127.0.0.1subscribe> <unsubscribe>user-unsubscribe@127.0.0.1unsubscribe> <post>user@127.0.0.1post> <archive>http://127.0.0.1/user/archive> <otherArchives> <otherArchive>http://base.google.com/base/1/127.0.0.1otherArchive> otherArchives> mailingList> mailingLists> ...project>
scm
SCM(软件配置管理,也称为源代码/控制管理或简洁的版本控制)。常见的 scm 有 svn 和 git 。
<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"> ... <scm> <connection>scm:svn:http://127.0.0.1/svn/my-projectconnection> <developerConnection>scm:svn:https://127.0.0.1/svn/my-projectdeveloperConnection> <tag>HEADtag> <url>http://127.0.0.1/websvn/my-projecturl> scm> ...project>
prerequisites
POM 执行的预设条件。
<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"> ... <prerequisites> <maven>2.0.6maven> prerequisites> ...project>
repositories
repositories
是遵循 Maven 存储库目录布局的 artifacts 集合。默认的 Maven 中央存储库位于https://repo.maven.apache.org/maven2/上。
<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"> ... <repositories> <repository> <releases> <enabled>falseenabled> <updatePolicy>alwaysupdatePolicy> <checksumPolicy>warnchecksumPolicy> releases> <snapshots> <enabled>trueenabled> <updatePolicy>neverupdatePolicy> <checksumPolicy>failchecksumPolicy> snapshots> <id>codehausSnapshotsid> <name>Codehaus Snapshotsname> <url>http://snapshots.maven.codehaus.org/maven2url> <layout>defaultlayout> repository> repositories> <pluginRepositories> ... pluginRepositories> ...project>
pluginRepositories
与 repositories
差不多。
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <distributionManagement> ... <downloadUrl>http://mojo.codehaus.org/my-projectdownloadUrl> <status>deployedstatus> distributionManagement> ...project>
distributionManagement
它管理在整个构建过程中生成的 artifact 和支持文件的分布。从最后的元素开始:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> ... <distributionManagement> ... <downloadUrl>http://mojo.codehaus.org/my-projectdownloadUrl> <status>deployedstatus> distributionManagement> ...project>
repository - 与
repositories
相似site - 站点信息
relocation - 项目迁移位置
profiles
activation
是一个 profile
的关键。配置文件的功能来自于在某些情况下仅修改基本 POM 的功能。这些情况通过 activation
元素指定。
<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"> ... <profiles> <profile> <id>testid> <activation> <activeByDefault>falseactiveByDefault> <jdk>1.5jdk> <os> <name>Windows XPname> <family>Windowsfamily> <arch>x86arch> <version>5.1.2600version> os> <property> <name>sparrow-typename> <value>Africanvalue> property> <file> <exists>${basedir}/file2.propertiesexists> <missing>${basedir}/file1.propertiesmissing> file> activation> ... profile> profiles>project>
参考资料
https://maven.apache.org/pom.html
觉得不错?欢迎转发分享给更多人
maven provided_Maven 教程之 pom.xml 详解相关推荐
- Maven实战:Pom.xml详解
什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的 ...
- maven pom.xml详解
什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的 ...
- maven核心,pom.xml详解
什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的 ...
- 五十一、创建第一个Maven项目和pom.xml 详解
@Author:Runsen @Date:2020/6/12 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
- maven(二)pom文件详解
文章目录 1. 什么是pom 文件? 2. pom文件各常用属性含义 2.1 项目基本信息 2.2 build项目构建属性介绍 2.2.1 resources资源路径列表 2.2.2 plugins ...
- pom.xml详解撸一下基础
pom.xml解释 <?xml version="1.0" encoding="UTF-8"?> <!--project 标签:根标签,表示对 ...
- GSAP教程之gsap.utils详解
gsap.utils提供了非常实用的方法集合,其中过很多可以返回函数,以便直接在tween中使用,特别是多对象动画时,将会每个目标调用一次,而不是为每个目标使用相同值. 例子: 为每个目标动画调用ra ...
- maven的标准pom.xml详解
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Pandas高级教程之:plot画图详解
文章目录 简介 基础画图 其他图像 bar stacked bar barh Histograms box Area Scatter Hexagonal bin Pie 在画图中处理NaN数据 其他作 ...
最新文章
- HDU 4712 Hamming Distance(随机算法)
- windows 网络规划
- slim android7 nexus7,【畅玩7.0】加一直升pure nexus 7.0系统简单教程(1106更新)
- SQLite学习手册(数据表和视图)
- c语言表达式5 gt 3 gt 1,C语言题目谁会做?
- php投票系统中各个文件的作用说明,PHP开发简单投票系统之投票页面功能模块(二)...
- Windows Phone 7 自适应键盘输入
- 彩灯(洛谷-P3857)
- BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )
- 一道非齐次方程组解的判定习题--行向量
- 更改docker ip
- 大数据告诉你,上海二手房到底难不难卖?
- 【CocosCreator 3.x】实现双人同屏效果 => 攻略
- 赵聪慧 java_专家引领,筑梦前行——赵聪慧省名班主任工作室
- 学计算机可以买ipad吗,考研党究竟有必要买ipad吗?买、买大个的
- LR参数化,参数化类型:Fille类型--参数分配与取值规律
- 【Zookeeper】ZK 是干什么的?
- 华严数字体系--说说不可说
- django学习 | 实战 # 微信自定义菜单
- Yocto Issues | The TMPDIR: /home12/calm.xia/poky/qemuarm/tmp can't be located on nfs.
热门文章
- html5标签的兼容性处理
- JS 的平凡之路--学习人气眼中的效果(上)
- React Native面试知识点
- springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.
- Keepalived详解之 - LVS(IPVS)管理工具ipvsadm使用指南
- mxnet系列教程之1-第一个例子
- 日期处理一之NSLalendar的使用
- bzoj1699[Usaco2007 Jan]Balanced Lineup排队
- linux date命令设置时间
- oracle精确匹配时间,Oracle时间精确到时、分、秒处理方法