<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">
<!-- 上面的信息的约束maven的写法-->
<modelVersion>4.0.0</modelVersion>
<!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。-->
<groupId>im.yuecai</groupId>
<!--项目或者组织的唯一标志-->
<artifactId>plan</artifactId>
<!--项目的模块坐标-->
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!--项目产生的构件类型或者说打包机制-->
<name>plan</name>
<!--用户描述项目的名称-->
<url>http://maven.apache.org</url>
<!--开发团队网站-->
<description>
项目的详细描述, Maven 产生的文档用。
</description>
<properties>
<plan.version>0.0.1-SNAPSHOT</plan.version>
<framework.all.version>0.0.1-SNAPSHOT</framework.all.version>
<mysql.version>5.1.6</mysql.version>
<copyright.year>2014 </copyright.year>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--是为pom定义一些常量,在pom中的其它地方可以直接引用 -->
</properties>
<modules>
<!-- 模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径 -->
<module>plan-model</module>
<module>plan-dao</module>
<module>plan-interfaces</module>
<module>plan-services</module>
<module>plan-app</module>
</modules>
<dependencies>
<!--描述了项目相关的所有依赖 -->
<dependency>
<groupId>junit</groupId>
<!--依赖的group ID-->
<artifactId>junit</artifactId>
<!--依赖的artifact ID-->
<version>3.8.1</version>
<!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。-->
<scope>test</scope>
<!--依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。
- compile :默认范围,用于编译
- provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
- runtime: 在执行时需要使用
- test: 用于test任务时使用
- system: 需要外在提供相应的元素。通过systemPath来取得
- systemPath: 仅用于范围为system。提供相应的路径
- optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用-->
</dependency>
</dependencies>
<distributionManagement>
<!--项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。-->
<repository>
<!--部署项目产生的构件到远程仓库需要的信息-->
<id>releases</id>
<url>http://192.168.1.XXX:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<!--构件的快照部署的信息-->
<id>snapshots</id>
<url>http://192.168.1.XXX:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
<build>
<!--构建项目需要的信息-->
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<!--该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。-->
<outputDirectory>${basedir}/target/classes</outputDirectory>
<!--被编译过的应用程序class文件存放的目录。-->
<resources>
<!--描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
<resource>
<!--描述了项目相关或测试相关的所有资源路径-->
<directory>${basedir}/src/main/java</directory>
<includes>
<!--包含的模式列表-->
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<excludes>
<!--排除的模式列表-->
<exclude>**/*.java</exclude>
</excludes>
<filtering>true</filtering>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
</resource>
</resources>
<plugins>
<!--使用的插件列表 。-->
<plugin>
<!--plugin元素包含描述插件所需要的信息。-->
<groupId>org.apache.maven.plugins</groupId>
<!--插件在仓库里的group ID-->
<artifactId>maven-compiler-plugin</artifactId>
<!--插件在仓库里的artifact ID-->
<version>2.3.2</version>
<!--被使用的插件的版本(或版本范围)-->
<configuration>
<!--被使用的插件的配置-->
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<verbose>true</verbose>
<fork>true</fork>
<executable>${JAVA_HOME}/bin/javac</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。-->
<execution>
<!--execution元素包含了插件执行需要的信息-->
<phase>compile</phase>
<!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段-->
<goals>
<!--配置的执行目标-->
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
子pom.xml文件相关信息
<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">
<!-- 上面的信息的约束maven的写法-->
<modelVersion>4.0.0</modelVersion>
<parent>
<!--父项目的坐标。-->
<groupId>im.yuecai</groupId>
<!--被继承的父项目的唯一标识符-->
<artifactId>plan</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>plan-app</artifactId>
<packaging>war</packaging>
<name>plan-app</name>
<dependencies>
<!--该元素描述了项目相关的所有依赖。-->
<dependency>
<groupId>im.yuecai</groupId>
<artifactId>plan-services</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>im.yuecai</groupId>
<artifactId>common-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.bidlink.monitor</groupId>
<!--项目依赖的groupId-->
<artifactId>monitor-client</artifactId>
<!--项目依赖的artifactId-->
<version>0.0.3-SNAPSHOT</version>
<!--项目依赖的版本-->
<exclusions>
<!--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题-->
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<!--构建项目需要的信息-->
<filters>
<!--当filtering开关打开时,使用到的过滤器属性文件列表-->
<filter>src/main/resources/filters/filter-${env}.properties</filter>
</filters>
<resources>
<!--描述了项目相关的所有资源路径列表-->
<resource>
<!--这个元素描述了项目相关或测试相关的所有资源路径-->
<directory>src/main/resources</directory>
<filtering>true</filtering>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
<excludes>
<!--排除的模式列表,例如**/*.xml-->
<exclude>filters/**</exclude>
</excludes>
</resource>
</resources>
</build>
<!-- 各种环境的配置信息 -->
<profiles>
<!-- 开发环境的配置信息 -->
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<!-- 默认是本地开发环境 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>pub</id>
<properties>
<env>pub</env>
</properties>
</profile>
</profiles>
</project>