首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Maven 下令的使用 Pom 文件规范

2012-11-03 
Maven 命令的使用 Pom 文件规范把? Maven 的系统文件下载并保存。 例如我的: D:\NBProject\apache-maven-2.

Maven 命令的使用 Pom 文件规范

把? Maven 的系统文件下载并保存。 例如我的: D:\NBProject\apache-maven-2.2.1

?

设置环境和变量 。我配置了一个 bat 文件。 执行后, 相关的环境变量就配置好了。

?

?

ECHO OFFSET JAVA_HOME=D:\Program Files\Java\jdk1.6.0SET M2_HOME=D:\NBProject\apache-maven-2.2.1SET PATH=%PATH%;%M2_HOME%\binECHO 准备执行测试Maven的版本信息.....PAUSEmvn -v

?

?

?然后新建一个文件夹, 建立 pom.xml 文件 。 规范 :

?

?groupId 定义了你的公司和组织的信息 。 比如,你的公司是 mycom , 项目是? myapp 那么,最好就定义

?

<groupId>com.mycom.myapp</groupId>

?

artifactId? 就定义为项目的名称, 在我们项目中,如果和项目名称不一致,就导致Maven不能编译,

?

<artifactId>travel-hotel-admin</artifactId>

?

?版本定义:

?

<version>2.0.0-SNAPSHOT</version>

?

?SNAPSHOT 表示是快照版本, 尚在开发中的不稳定版本 。 Maven 遇到这种标记的版本号时, 每次都会去中央库取最原始的 Jar 包 。

?

<packaging>war</packaging>

?

打包类型?? jsr war pom? 它们的打包执行的命令不一样.

?

?

我们源代码最好也就按照 groupId 定义的名称,包名就定义为???com.mycom.myapp.xxxxxxx.xxxxxxxx

?

Eclipse中的项目还是包依赖:

比如: 项目中,包含这个依赖:


??? ??? <dependency>
??? ??? ??? <groupId>com.woyo.travel</groupId>
??? ??? ??? <artifactId>travel-common-server-api</artifactId>
??? ??? ??? <version>2.0.0-SNAPSHOT</version>
??? ??? </dependency>

?

而且, Eclpse 也打开了这个工程,? 那么Eclipse就会依赖这个工程.? 如果这个工程被关闭了, 那么,就会去本地仓库中查找所依赖的Jar包。此时, 就是Jar包依赖了。 有时候,

?

?

POM 工程的继承:

?

通过在父工程中定义好 版本号, groupId ,version 等参数, 继承的工程不用定义这些参数,就会自动继承。

?

travel/pom.xml

?

<?xml version="1.0" encoding="UTF-8"?><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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xxxxxxxxx.travel</groupId><artifactId>travel-hotel</artifactId><packaging>pom</packaging><name>travel hotel Parent pom.xml</name><version>2.0.0-SNAPSHOT</version><organization><name>travel</name><url>http://hotel.travel.woyo.com</url></organization>    <modules>        <module>travel-hotel-admin</module>        <module>travel-hotel-cc</module>    </modules>        <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <configuration>                    <source>1.6</source>                    <target>1.6</target>                    <encoding>UTF-8</encoding>                </configuration>            </plugin>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-resources-plugin</artifactId>                <configuration>                    <encoding>UTF-8</encoding>                </configuration>            </plugin>        </plugins>    <resources>      <resource>        <directory>src/main/resources</directory>        <filtering>true</filtering>      </resource>    </resources>    <filters>      <filter>${user.home}/travel_hotel.properties</filter>    </filters>    </build><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 主要依赖库的版本定义 --><spring.version>2.5.6</spring.version><spring.security.version>2.0.5.RELEASE</spring.security.version><struts2.version>2.2.1</struts2.version><ibatis.version>2.3.4.726</ibatis.version><mysql-driver.version>5.1.12</mysql-driver.version><slf4j.version>1.6.1</slf4j.version><!-- Plugin的属性定义 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><urlrewritefilter.version>3.1.0</urlrewritefilter.version></properties> <dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.4</version><scope>test</scope></dependency>                ..............................................</dependencies> </dependencyManagement></project>

?

?

子工程定义在

?

travel/travel-hotel/pom.xml

?

这样的目录结构, 子工程的 pom 文件会自动在../pom 得到父工程的pom文件定义,否则需要定义

?

<relativePath>../travel/pom.xml</ relativePath>

?

才能找到

<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.0</modelVersion><parent><artifactId>travel-hotel</artifactId><groupId>com.woyo.travel</groupId><version>2.0.0-SNAPSHOT</version></parent><groupId>com.woyo.travel</groupId><artifactId>travel-hotel-admin</artifactId><version>2.0.0-SNAPSHOT</version><packaging>war</packaging><name>travel-hotel-admin</name><dependencies><dependency><groupId>com.woyo.travel</groupId><artifactId>travel-common-server-api</artifactId><version>2.0.0-SNAPSHOT</version></dependency></dependencies></project>

?

?运行了? Maven install 命令后 , 会在本地 repository 仓库生成 对应的文件.

?

如果是打包成 war 包, 会自动把相应的 资源文件 , 依赖的 jar 包(包括传递依赖的)全部 Copy 到web-inf 目录,

?

?

衍生问题:

Maven 中 Jar 包传递依赖的问题:

?

Maven 2 的一个很明显的优势就是jar 包传递依赖的解决。

?

如果你使用的是m2eclipse 插件,那么最简单的找到传递依赖冲突的插件的方法,就是在Eclipse 中,打开pom.xml时,使用open with Maven Pom Editor,查看Dependency Hierachy,输入想查找的jar包名,可以看到它的父级依赖关系,即它是谁的传递依赖,有几个jar包依赖到这个jar包,分别使用的是什么版本都可以看到。

?

1 楼 Jason(aijun) 2011-05-17   吴总,啥时候给我们讲讲。 2 楼 Jxdwuao 2011-05-18   Jason(aijun) 写道吴总,啥时候给我们讲讲。
懂点皮毛阿 咋讲列

热点排行