一、基本设置
1. 配置说明
<!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.winner.trade,maven会将该项目打成的jar包放本地路径:/com/winner/trade -->
<groupId>com.winner.trade</groupId>
<!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>...</artifactId>
<!-- 本项目目前所处的版本号 -->
<version>1.0.0</version>
<!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->
<packaging>jar</packaging>
<!-- 定义本项目的依赖关系 -->
<dependencies>...</dependencies>
<!-- 父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。坐标包括group ID,artifact ID和 version或者还有relativePath -->
<parent>...</parent>
<!-- 定义本项目的依赖关系 -->
<dependencyManagement>...</dependencyManagement>
<!-- 子模块代码,对modules下的模块进行聚合 -->
<modules>...</modules>
<!-- 为pom定义一些常量,在pom中的其它地方可以直接引用 使用方式 如 :${file.encoding} -->
<properties>...</properties>
2. dependencies和dependencyManagement的区别
1)dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)
2)dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本
二、构建过程的设置
1. 示例
<build>
<finalName>platform-b2c</finalName>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.xls</exclude>
</excludes>
</resource>
<!-- xls文件不能filter处理,需区分出来 -->
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xls</include>
</includes>
</resource>
</resources>
<plugins>到时候详细看</plugins>
<pluginManagement>到时候详细看</pluginManagement>
</build>
2. 配置说明
<!-- 产生的构件的文件名,默认值是${artifactId}-${version}。 -->
<finalName>myPorjectName</finalName>
<!-- 构建产生的所有文件存放的目录,默认为${basedir}/target,即项目根目录下的target -->
<directory>${basedir}/target</directory>
<!--必须跟命令行上的参数相同例如jar:jar,或者与某个阶段(phase)相同例如install、compile等 -->
<defaultGoal>install</defaultGoal>
<!--当filtering开关打开时,使用到的过滤器属性文件列表。 -->
<filters>
<filter>../filter.properties</filter>
</filters>
<!--项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里。 -->
<resources>
<resource>见3</resource>
</resources>
<!--使用的插件列表 -->
<plugins>
<plugin>...</plugin>
</plugins>
<!--pluginManagement主要是为了统一管理插件,确保所有子POM使用的插件版本保持一致,类似dependencies和dependencyManagement,只是一个声明,一般用在父pom文件中 -->
<pluginManagement>
<plugins>...</plugins>
</pluginManagement>
3. resources说明
<resources>
<resource>
<!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。 -->
<!--举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。 -->
<!--然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 -->
<targetPath>resources</targetPath>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 -->
<filtering>true</filtering>
<!--描述存放资源的目录,该路径相对POM路径 -->
<directory>src/main/resources</directory>
<!--包含的模式列表 -->
<includes>
<include>**/*.properties</include&g