Maven之pom.xml详解
来源:互联网 发布:转换视频格式的软件 编辑:程序博客网 时间:2024/05/16 06:46
转载于:http://www.cnblogs.com/sharpest/p/5969566.html
我们先看一个简单的例子:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <!-- maven model version --> 4 <modelVersion>4.0.0</modelVersion> 5 <!-- project group id & artifact id --> 6 <groupId>com.freesoft.mvn-webapp</groupId> 7 <artifactId>mvnwebapp</artifactId> 8 <!-- packing type --> 9 <packaging>war</packaging>10 <!-- version -->11 <version>1.0-SNAPSHOT</version>12 <name>mvnwebapp Maven Webapp</name>13 <url>http://maven.apache.org</url>14 15 16 <dependencies>17 18 <!-- JUnit -->19 <dependency>20 <groupId>junit</groupId>21 <artifactId>junit</artifactId>22 <version>4.11</version>23 <scope>test</scope>24 </dependency>25 26 </dependencies>27 28 29 <build>30 <finalName>mvnwebapp</finalName>31 <pluginManagement>32 <plugins>33 <plugin>34 <groupId>org.apache.tomcat.maven</groupId>35 <artifactId>tomcat7-maven-plugin</artifactId>36 <version>2.1</version>37 <configuration>38 <tomcat-url>http://localhost:8080/manager/html</tomcat-url>39 <server>tomcat_localtest</server>40 </configuration>41 </plugin>42 </plugins>43 </pluginManagement>44 </build>45 46 <properties>47 <struts.version>2.3.15</struts.version>48 <mysql.version>5.1.29</mysql.version>49 <hibernate.version>4.3.1.Final</hibernate.version>50 </properties>51 </project>
下面分段讲解。
1. 基本信息
modelVersionMaven模块版本,目前我们一般都取值4.0.0groupId整个系统的名称。artifactId子模块名称。packaging打包类型,可取值:jar,war等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin,后面有机会我们会讲述如何配置打包的插件。
2. dependencies
依赖关系。实际上pom之间存在好三种关系:继承、依赖、聚合。我们先讲依赖,这也是最重要的关系。
groupId依赖项的groupIdartifactId依赖项的artifactIdversion依赖项的版本scope依赖项的适用范围:
- compile,缺省值,适用于所有阶段,会随着项目一起发布。
- provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
- runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
- test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
- system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
2.1 关于排除依赖冲突
我们可能经常会遇到这样一个问题:我们的项目有两个依赖项:A & B,而且A和B同时依赖了C,但不是同一个版本。那么我们怎么办呢?
2.1.1 添加检查插件
1 <reporting>2 <plugins>3 <plugin>4 <groupId>org.apache.maven.plugins</groupId>5 <artifactId>maven-project-info-reports-plugin</artifactId>6 </plugin>7 </plugins>8 </reporting>
然后运行:mvn project-info-reports:dependencies,来查看依赖项报告。
2.1.2 去除依赖项
如果我们需要在某个dependency中去除某个依赖项,直接这样即可:
1 <!-- Struts2 --> 2 <dependency> 3 <groupId>org.apache.struts</groupId> 4 <artifactId>struts2-core</artifactId> 5 <version>${struts.version}</version> 6 <exclusions> 7 <exclusion> 8 <groupId>org.freemarker</groupId> 9 <artifactId>freemarker</artifactId>10 </exclusion>11 </exclusions>12 </dependency>
3. 继承
我的repository下面有个例子就直接拿来用了:
1 <modelVersion>4.0.0</modelVersion>2 <parent>3 <groupId>com.thoughtworks.xstream</groupId>4 <artifactId>xstream-parent</artifactId>5 <version>1.4.3</version>6 </parent>7 <artifactId>xstream</artifactId>8 <packaging>jar</packaging>9 <name>XStream Core</name>
其中的parent表示父pom是com.thoughtworks.xstream的xstream-parent的1.4.3版本。继承关系比较简单,这里不做过多介绍。
4. 聚合
我们可以通过一个大的项目来整合各个小的模块:
1 <modules>2 <module>my-app</module>3 </modules>
5. 属性
属性表述类似于EL表达式,ANT中也同样有,所以我们的properties字段可以这样使用:
1 <!-- mysql -->2 <dependency>3 <groupId>mysql</groupId>4 <artifactId>mysql-connector-java</artifactId>5 <version>${mysql.version}</version>6 </dependency>
6. 构建
6.1 plugin
Plugin的配置如下:
1 <pluginManagement> 2 <plugins> 3 <plugin> 4 <groupId>org.apache.tomcat.maven</groupId> 5 <artifactId>tomcat7-maven-plugin</artifactId> 6 <version>2.1</version> 7 <configuration> 8 <tomcat-url>http://localhost:8080/manager/html</tomcat-url> 9 <server>tomcat_localtest</server>10 </configuration>11 </plugin>12 </plugins>13 </pluginManagement>
我们可以看到同样要哟偶groupId、artifactId、version还有一些配置参数。
6.2 resource
指定你在Build时需要的资源文件:
1 <resources> 2 <resource> 3 <targetPath>WEB-INF/resource</targetPath> 4 <!-- 不对文件中的表达式进行处理 --> 5 <filtering>false</filtering> 6 <directory>${basedir}/src/test/resources</directory> 7 <includes> 8 <include>include.xml</include> 9 </includes>10 <excludes>11 <exclude>exclude.xml</exclude>12 </excludes>13 </resource>14 </resources>
阅读全文
0 0
- Maven之pom.xml详解
- Maven之pom.xml详解
- maven之pom.xml详解
- maven之pom.xml详解
- Maven之pom.xml详解
- maven之pom.xml详解
- 详解Maven之pom.xml文件
- maven pom.xml详解
- maven POM.xml详解
- maven pom.xml详解
- maven POM.xml详解
- maven POM.xml详解
- maven POM.xml详解
- maven pom.xml详解
- maven pom.xml详解
- 【maven】 pom.xml详解
- maven pom.xml详解
- maven pom.xml详解
- Visio安装秘钥
- Excel在统计分析中的应用—第五章—统计指数-Part3- 综合指数(现期加权指数(帕氏指数))
- cxf spring
- 解决InnoDB出现“the table is full”的问题
- var ev = ev || event
- Maven之pom.xml详解
- java 二叉树的递归遍历和非递归遍历
- java基础部分代码相关题2
- 使用MultipartEntity对文字、图片、视频进行综合上传
- mysql基础教程
- props和state
- CSDN-markdown编辑器使用指南
- 连猴子都能看懂的 IOS 国际化(本地化)教程
- BufferedImage 和 Graphics2D 画图,背景色透明