Terry.Li-彬

虚其心,可解天下之问;专其心,可治天下之学;静其心,可悟天下之理;恒其心,可成天下之业。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  143 随笔 :: 344 文章 :: 130 评论 :: 0 Trackbacks
一个Maven2工程的核心就是这一个pom.xml,它包含了你的工程详细信息,如:版本、配置、依赖、测试、项目成员等等。学习maven2主要就是学习如何配置pom.xml。

一个简单的而完全可操作的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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <!--maven2-->
<groupId>ctzj_bss</groupId> <!-- 这个项目所属组的id,一般是项目所在的公司或组织的域名 -->
<artifactId>NRC</artifactId> <!-- 项目的id,和groupId一起组成这个项目的一个唯一id,以用在别的maven2工程中 -->
<packaging>jar</packaging> <!-- 最后这个工程的打包类型,在这里是打成jar包 -->
<version>1.0</version> <!-- 版本号 -->
<name>kenan nrc batch</name> <!-- 项目名, 区别于artifactId-->
<description>insert a nrc in kenan db</description> <!-- 项目描述,会出现在生成的工程站点上 -->
<build> <!-- 项目的构建信息 -->
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <outputDirectory>target\classes</outputDirectory>
    <testOutputDirectory>target\test-classes</testOutputDirectory>
    <directory>target</directory> <!-- 构建后生成文件(jar,site等)所在位置 -->
</build>
<dependencies> <!-- 项目的依赖外接包,maven的优势之一 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
<reporting> <!-- 项目报表,有很多插件可供选择 -->
    <outputDirectory>target/site</outputDirectory>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>
</project>

在你配置了你的pom文件后,你就可以使用如下命令来运行maven2

mvn compiler:compile 编译你的原文件
mvn jar:jar 打包
mvn site:site 生成项目站点


接下来逐个介绍pom.xml的各个要素
developor,organization and mail lit
build
dependencies
reporting


1.developor,organization and mail list

可以在pom中加入开发人员列表,项目所属组织信息,邮件列表,这些信息会出现在生成的项目站点上

<organization>
    <name>CTZJ BSS</name>
</organization>
<developers>
    <developer>
        <name>Chen Lin</name>
        <organization>ZJHCsoft</organization>
        <email>chenlin@zjhcsoft.com</email>
    </developer>
</developers>
<mailingLists>
    <mailingList>
        <name>${pom.name} Dev List</name>
    </mailingList>
    <mailingList>
        <name>${pom.name} User List</name>
    </mailingList>
</mailingLists>

2. build

配置项目的构建信息,主要有指定目录,包括源代码、测试源代码、输出目录、资源目录等.如果没有特殊需求以上的pom已经足够了

3. dependencies

配置项目要用到的jar包.自认为maven对jar包的管理是它的一个重要特色.下面是一个jar包的配置:

<dependency>
    <groupId>concurrent</groupId>
    <artifactId>concurrent</artifactId>
    <version>1.3.4</version>
    <scope>compile</scope>
</dependency>

groupId: 没有特定的含义,一般来自同一组织的jar包会有相同的groupId值
artifactId: 这个jar的id,一般是这个jar包的名称
version: jar包的版本号,一般情况下,artifactId-version.jar就是这个jar包的文件名
scope: 这个jar所影响的范围,compile指它会在编译源代码时用到.还有test,provide,runtime等值

如果你不知道jar包的groupId和artifactId,可以到http://www.mavenregistry.com/ 进行查询

一旦指定后,当你进行编译时,它就会到你的本地资源库

另,如果你引入本地包,则需要先行将它安装到本地资料库(repository),使用如下命令

mvn install:install-file -DgroupId=%groupId% -DartifactId=%artifactId% -DgeneratePom=true -Dfile=%file% -Dpackaging=jar -Dversion=%version%

4. reporting

通过使用相应的report plug-in可以生成各种各样的report.如javadoc,junit test report,代码检查等

常用的常见有

<plugin>
    <groupId>org.apache.maven.plugins</groupId> <!--java doc -->
    <artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId> <!-- 代码检查 -->
    <artifactId>maven-checkstyle-plugin</artifactId>
    <configuration>
        <configLocation>config/sun_checks.xml</configLocation>
    </configuration>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId> <!-- test 结果报表 -->
    <artifactId>surefire-report-maven-plugin</artifactId>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId> <!-- 源代码的HTML化 -->
    <artifactId>jxr-maven-plugin</artifactId>
</plugin>

在maven的官方网站有可以找到更多的report plugin


最后一个比较完整的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>
<name>CutoverModule</name>
<groupId>ctzj_batch</groupId>
<artifactId>eai_cutover</artifactId>
<url>http://134.98.83.137:8081/scarab/issues</url>
<inceptionYear>2006</inceptionYear>
<organization>
    <name>CTZJ BSS</name>
    <url>http://www.zjhcsoft.com</url>
</organization>
<version>1.0</version>
<description>97 cutover batch module:invoke eai-adapter to update the phone number or value of
c4/c5</description>
<developers>
    <developer>
        <name>Chen Lin</name>
        <organization>ZJHCSoft</organization>
        <email>chenlin@zjhcsoft.com</email>
    </developer>
</developers>
<mailingLists>
    <mailingList>
        <name>${pom.name} Dev List</name>
     </mailingList>
</mailingLists>
<build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <outputDirectory>target\classes</outputDirectory>
    <testOutputDirectory>target\test-classes</testOutputDirectory>
    <directory>target</directory>
    <plugins>
    <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.1</version>
    </plugin>
    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.1</version>
    </plugin>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0</version>
    </plugin>
    <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.1.2</version>
    </plugin>
    <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.0</version>
    </plugin>
    <plugin>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.1</version>
    </plugin>
    </plugins>
</build>
<ciManagement>
    <system>continuum</system>
    <url>http://localhost:8080/continuum/servlet/continuum</url>
</ciManagement>
<scm>
    <connection>scm:local|E:/eclipseworkshop|EAIBatch</connection>
</scm>
<dependencies>
    <dependency>
        <groupId>ctzj_batch</groupId>
        <artifactId>Eaiadapter</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>ctzj_batch</groupId>
        <artifactId>ta</artifactId>
        <version>1.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>ctzj_batch</groupId>
        <artifactId>grnds-common</artifactId>
        <version>4.1</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>concurrent</groupId>
        <artifactId>concurrent</artifactId>
        <version>1.3.4</version>
        <scope>compile</scope>
    </dependency>
</dependencies>
<reporting>
    <outputDirectory>target/site</outputDirectory>
    <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
            <configLocation>config/sun_checks.xml</configLocation>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>surefire-report-maven-plugin</artifactId>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jxr-maven-plugin</artifactId>
    </plugin>
    </plugins>
</reporting>
</project>
posted on 2008-01-10 19:46 礼物 阅读(1446) 评论(0)  编辑  收藏 所属分类: maven2