定制 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是一款流行的自动化构建工具,广泛应用于Java项目的构建过程中。它通过一种项目对象模型(Project Object Model,简称POM)来管理项目的构建...
#### 引言:Maven——自动化构建与项目管理的利器 《Maven权威指南》是一部详尽解读Apache Maven的书籍,由Tim O'Brien、John Casey、Brian Fox、Bruce Snyder、Jason Van Zyl和Juven Xu等多位来自Sonatype Inc.的...
首先,我们来看一下Maven的核心概念——POM。POM是一个XML文件,包含了项目的基本信息,如项目名称、版本、描述、开发者信息等,同时也包含了项目的依赖、构建配置和插件设置。POM使得Maven能够理解项目结构,执行...
`settings.xml`文件可以用来定制个人的Maven行为,比如设置默认的字符集,或者定义特定的仓库用于更快地获取依赖。 此外,Maven的POM(Project Object Model)文件是每个Maven项目的核心,它定义了项目的基本信息、...
在本书中,你会了解到Maven的核心概念——**项目对象模型(Project Object Model,POM)**。POM是Maven项目的基础,包含了项目的配置信息,如项目依赖、构建目标、插件等。通过POM.xml文件,Maven能够理解项目的结构...
【标题】"maven-src完整版"所涉及的知识点主要围绕Maven——一个强大的Java项目管理工具展开。Maven简化了构建、管理和依赖项解析的过程,使得开发人员能够更高效地进行SSM(Spring、Struts和MyBatis)框架的应用...
首先,我们要理解Maven的核心概念——POM。POM是一个XML文件,包含了项目的基本信息,如项目名称、版本、描述、依赖库等。它是Maven构建项目的蓝图,通过解析POM,Maven可以自动下载所需的依赖库,执行构建过程,并...
Maven是Java开发中的一个项目管理和综合工具,而MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。 **Maven详解:** Maven是Apache软件基金会开发的一个项目管理工具,主要用于构建、管理和...
1. **原因**:企业内部开发中,可能会有一些不能公开的库或者定制化的第三方库,这些库无法上传到公共的Maven Central仓库,因此需要搭建私有的Maven仓库。 2. **Nexus/Artifactory**:Nexus和Artifactory是常用的...
4. **插件配置**:通过配置Maven插件,如maven-jar-plugin或maven-war-plugin,可以定制打包过程,例如添加manifest文件、排除某些文件或指定特定的打包选项。 5. **源码处理**:Maven可以自动编译源码(src/main/...
Maven使用一个XML格式的配置文件——pom.xml,来定义项目的信息、依赖关系、构建生命周期和插件。这使得开发者无需关心具体构建命令,只需关注项目逻辑。Maven有预定义的生命周期阶段(如清理、编译、测试、打包等)...
开发者可以通过配置`pom.xml`来定制和扩展Maven的行为。 总的来说,Maven通过提供标准化的构建流程、自动化依赖管理和项目配置,极大地提高了开发效率,降低了项目维护的复杂性。无论是在小型项目还是大型企业级...
- `m2e.zip`可能是一个Maven的Eclipse插件——M2E(Maven Integration for Eclipse),它将Maven集成到Eclipse IDE中,方便在IDE内进行Maven项目的管理。 ### 进阶使用 1. **依赖管理(Dependency Management)**...
标题“Maven 与 Ant 之比较”表明了本文将探讨两种在Java开发中广泛使用的构建工具——Maven和Ant。它们的主要功能是管理和自动化项目的构建过程,包括编译源代码、运行测试、打包应用以及部署。通过对两者进行对比...
本章将通过一个具体的示例——简单天气程序——来演示如何定制Maven项目,包括添加新的依赖、资源等。 **4.1.1 下载示例章节** 同样可以通过下载示例项目来快速实践本章中的示例。 **4.2 定义简单天气项目** 介绍...
6. **项目结构**:“Cinderella-master”可能代表项目的源代码仓库,通常包含src/main/java目录用于放置Java源码,src/main/resources存放资源配置文件,以及pom.xml文件,这是Maven的项目对象模型文件,定义了项目...
这个“maven-ssm”项目显然是一个示例,展示了如何将这些组件集成在一起,以实现数据库操作中的基本功能——增删改查(CRUD)。 1. Maven: Maven是一个项目管理和综合工具,它帮助开发者管理项目的构建、报告和...