maven pom.xml

来源:互联网 发布:数据库系统的简易设计 编辑:程序博客网 时间:2024/06/05 19:24

我们先看一个简单的例子:

复制代码
 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中查找它。
之前例子里的junit就只用在了test中。exclusions排除项目中的依赖冲突时使用。

 

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
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 羊肉吃法 白菜羊肉 羊肉土豆 羊肉馅 羊肉炖山药 羊肉小炒 羊肉热量 水煮羊肉 羊肉炖土豆 羊肉饺子 羊肉卷 滋补羊肉 新鲜羊肉 羊肉面馆 切羊肉卷 特色羊肉馆 羊肉批发价 羊肉报价 冷冻羊肉 羊肉汤火锅 特色羊肉粉 羊肉片批发 马店羊肉 扒羊肉 炸羊肉 好羊肉 熬羊肉 羊肉粉丝 羊肉忌 爆羊肉 土羊肉 羊肉做法大全 孕妇可以吃羊肉吗 孕妇可以吃羊肉 孕妇能吃羊肉吗 家常羊肉汤做法 孕妇能吃羊肉 羊肉不能和什么一起吃 羊肉怎么做好吃 羊肉炖萝卜做法 炖羊肉放什么调料