`
wanghaisheng
  • 浏览: 91725 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

maven学习6——定制pom

阅读更多

定制 POM

Maven 2 通过该 pom.xml 文件了解您的项目。该文件由 Archetype 按照 NumOps 生成,如清单 8 所示:


清单 8. Archetype 生成的 POM - 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>
  <groupId>com.ibm.devworks</groupId>
  <artifactId>NumOps</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

请注意:在测试阶段中(通过 <scope> 标记),Archetype 如何定义模块的坐标、如何将类型定义为 JAR 归档以及如何将 JUnit 指定为一个依赖项。要为您的新项目定制这个 pom.xml 文件,请参照清单 9 中突出显示的部分,稍作改动。


清单 9. 为 NumOps 项目定制生成的 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>
  <groupId>com.ibm.devworks</groupId>
  <artifactId>NumOps</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Intro to Maven 2 Example 1</name>
                      <url>http://www.ibm.com/java</url>
                       <build>
                        <plugins>
                          <plugin>
                            <artifactId>maven-compiler-plugin</artifactId>
                            <configuration>
                              <source>1.5</source>
                              <target>1.5</target>
                            </configuration>
                           </plugin>
                        </plugins>
                      </build>
        <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

额外的 <build> 标记是必要的,用来覆盖源代码,以达到 Java 代码的水平。默认情况下,采用的是 JDK 1.4,但您的代码使用了泛型,因而需要 JDK 5.0 编译。

编译定制的项目

现在可以使用 mvn compile 命令编译 NumOps 项目。 这个命令使 Maven 2 引擎从构建生命周期一直运行到编译阶段,并执行相应的 mojo。您应该看到构建成功的报告,报告中在目标目录树里创建了三个类文件(如清单 10 所示)。如果这是第一次运行,那会花点时间,因为一些依赖项需要经过 Internet 从中央存储库下载。


清单 10. NumOps 项目中 mvn 编译的输出

                    
[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Intro to Maven 2 Example 1
[INFO]    task-segment: [compile]
[INFO] -------------------------------------------------------------------------
---
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
Compiling 3 source files to C:\temp\maven\NumOps\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sat Dec 02 22:52:16 EST 2006
[INFO] Final Memory: 3M/7M
[INFO] ------------------------------------------------------------------------

 


添加单元测试

项目开发的最佳实践通常要求对所有代码模块进行单元测试。Maven 2 为您创建了一个占位符 AppTest.java 单元测试文件。现在,将文件名改为 NumOpsTest.java,请参照清单 11 中突出显示的部分,对生成的单元测试做出改动。也可以从源代码下载处复制单元测试的源代码(参见 下载)。


清单 11. 为项目添加 NumOpsTest 单元测试

                    
package com.ibm.devworks;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Unit test for simple App.
 */
public class NumOpsTest 
    extends TestCase
{
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public NumOpsTest( String testName )
    {
        super( testName );
    }

    ...

    public void testNumOps()
                        {
                        NumOps nops = new NumOps();
                        assertTrue( nops.size() == 1);
                            assertTrue( 
                             nops.getOp(0).getDesc().equals("plus"));
                            assertTrue( nops.getOp(0).op(2,1) == 3);
                    
                        }
}

 

现在可以使用 mvn test 命令运行所有的 mojo 一直到测试阶段。

Maven 2 编译源码和单元测试。然后运行测试,同时报告成功、失败和错误的数目,如清单 12 所示:


清单 12. 执行 mvn 测试来编译项目和运行单元测试

                    
[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Intro to Maven 2 Example 1
[INFO]    task-segment: [test]
[INFO] -------------------------------------------------------------------------
---
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
Compiling 1 source file to C:\temp\maven\NumOps\target\test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: C:\temp\maven\NumOps\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.ibm.devworks.NumOpsTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec

Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Sat Dec 02 23:04:27 EST 2006
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------
分享到:
评论

相关推荐

    maven学习文档

    ### Maven学习文档知识点详解 #### 一、Maven概述与安装目录介绍 Maven是一款流行的自动化构建工具,广泛应用于Java项目的构建过程中。它通过一种项目对象模型(Project Object Model,简称POM)来管理项目的构建...

    Maven权威指南,学习参考手册

    #### 引言:Maven——自动化构建与项目管理的利器 《Maven权威指南》是一部详尽解读Apache Maven的书籍,由Tim O'Brien、John Casey、Brian Fox、Bruce Snyder、Jason Van Zyl和Juven Xu等多位来自Sonatype Inc.的...

    apache-maven下载安装

    首先,我们来看一下Maven的核心概念——POM。POM是一个XML文件,包含了项目的基本信息,如项目名称、版本、描述、开发者信息等,同时也包含了项目的依赖、构建配置和插件设置。POM使得Maven能够理解项目结构,执行...

    Maven 安装与配置(csdn)————程序.pdf

    `settings.xml`文件可以用来定制个人的Maven行为,比如设置默认的字符集,或者定义特定的仓库用于更快地获取依赖。 此外,Maven的POM(Project Object Model)文件是每个Maven项目的核心,它定义了项目的基本信息、...

    maven中文完整版权威指南pdf

    在本书中,你会了解到Maven的核心概念——**项目对象模型(Project Object Model,POM)**。POM是Maven项目的基础,包含了项目的配置信息,如项目依赖、构建目标、插件等。通过POM.xml文件,Maven能够理解项目的结构...

    maven-src完整版

    【标题】"maven-src完整版"所涉及的知识点主要围绕Maven——一个强大的Java项目管理工具展开。Maven简化了构建、管理和依赖项解析的过程,使得开发人员能够更高效地进行SSM(Spring、Struts和MyBatis)框架的应用...

    maven工具类解压直接使用的点点滴滴胜多负少的

    首先,我们要理解Maven的核心概念——POM。POM是一个XML文件,包含了项目的基本信息,如项目名称、版本、描述、依赖库等。它是Maven构建项目的蓝图,通过解析POM,Maven可以自动下载所需的依赖库,执行构建过程,并...

    maven项目+mybatis

    Maven是Java开发中的一个项目管理和综合工具,而MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。 **Maven详解:** Maven是Apache软件基金会开发的一个项目管理工具,主要用于构建、管理和...

    maven教程,分模块构建及私服搭建

    1. **原因**:企业内部开发中,可能会有一些不能公开的库或者定制化的第三方库,这些库无法上传到公共的Maven Central仓库,因此需要搭建私有的Maven仓库。 2. **Nexus/Artifactory**:Nexus和Artifactory是常用的...

    maven打包

    4. **插件配置**:通过配置Maven插件,如maven-jar-plugin或maven-war-plugin,可以定制打包过程,例如添加manifest文件、排除某些文件或指定特定的打包选项。 5. **源码处理**:Maven可以自动编译源码(src/main/...

    day04-Maven&MyBatis.zip

    Maven使用一个XML格式的配置文件——pom.xml,来定义项目的信息、依赖关系、构建生命周期和插件。这使得开发者无需关心具体构建命令,只需关注项目逻辑。Maven有预定义的生命周期阶段(如清理、编译、测试、打包等)...

    maven仓库包

    开发者可以通过配置`pom.xml`来定制和扩展Maven的行为。 总的来说,Maven通过提供标准化的构建流程、自动化依赖管理和项目配置,极大地提高了开发效率,降低了项目维护的复杂性。无论是在小型项目还是大型企业级...

    Maven培训 资料

    - `m2e.zip`可能是一个Maven的Eclipse插件——M2E(Maven Integration for Eclipse),它将Maven集成到Eclipse IDE中,方便在IDE内进行Maven项目的管理。 ### 进阶使用 1. **依赖管理(Dependency Management)**...

    Maven 与 Ant 之比较

    标题“Maven 与 Ant 之比较”表明了本文将探讨两种在Java开发中广泛使用的构建工具——Maven和Ant。它们的主要功能是管理和自动化项目的构建过程,包括编译源代码、运行测试、打包应用以及部署。通过对两者进行对比...

    maven-definitive-guide

    本章将通过一个具体的示例——简单天气程序——来演示如何定制Maven项目,包括添加新的依赖、资源等。 **4.1.1 下载示例章节** 同样可以通过下载示例项目来快速实践本章中的示例。 **4.2 定义简单天气项目** 介绍...

    软件开发综合项目——辛德瑞拉婚纱礼服定制网站,使用SSM框架和Maven管理工具,开发环境为EclipseJeePhot.zip

    6. **项目结构**:“Cinderella-master”可能代表项目的源代码仓库,通常包含src/main/java目录用于放置Java源码,src/main/resources存放资源配置文件,以及pom.xml文件,这是Maven的项目对象模型文件,定义了项目...

    maven ssm的增删改查

    这个“maven-ssm”项目显然是一个示例,展示了如何将这些组件集成在一起,以实现数据库操作中的基本功能——增删改查(CRUD)。 1. Maven: Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和...

Global site tag (gtag.js) - Google Analytics