maven实战(二)maven定制一个项目

来源:互联网 发布:手机图文设计软件 编辑:程序博客网 时间:2024/06/06 01:06

定制项目信息

pom.xml 添加组织,法律和开发人员信息:

<licenses>    <license>        <name>Apache 2</name>        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>        <distribution>repo</distribution>        <comments>A business-friendly OSS license</comments>    </license></licenses><organization>    <name>Sonatype</name>    <url>http://www.sonatype.com</url></organization><developers>    <developer>        <id>jason</id>        <name>Jason Van Zyl</name>        <email>jason@maven.org</email>        <url>http://www.sonatype.com</url>        <organization>Sonatype</organization>        <organizationUrl>http://www.sonatype.com</organizationUrl>        <roles>            <role>developer</role>        </roles>        <timezone>-6</timezone>    </developer></developers

licenses,organization 和developers 等项目基本描述信息元素是加在dependencies元素之前的。

定制依赖

pom文件的dependences节点下添加所需的依赖,例如:

<dependencies>    <dependency>        <groupId>log4j</groupId>        <artifactId>log4j</artifactId>        <version>1.2.14</version>    </dependency>    <dependency>        <groupId>dom4j</groupId>        <artifactId>dom4j</artifactId>        <version>1.6.1</version>    </dependency>    <dependency>        <groupId>jaxen</groupId>        <artifactId>jaxen</artifactId>        <version>1.1.1</version>    </dependency>    <dependency>        <groupId>velocity</groupId>        <artifactId>velocity</artifactId>        <version>1.5</version>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>3.8.1</version>        <scope>test</scope>    </dependency>...</dependencies> 

修改pom后,在pom统计目录下运行mvn install讲依赖jar包下载到本地仓库中。

运行javaMain函数程序

 mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main

1.Maven Exec 插件:

Exec 插件允许你运行 Java 类和其它脚本。 它不是 Maven 核心插件,但它可以从Codehaus 3 的 Mojo 4 项目得到。想要查看 Exec 插件的完整描述,运行:

$ mvn help:describe -Dplugin=exec -Dfull

这会列出所有 Maven Exec 插件可用的目标。 Help 插件同时也会列出 Exec 插件
的有效参数,如果你想要定制 Exec 插件的行为,传入命令行参数,你应该使用
help:describe 提供的文档作为指南。 虽然Exec 插件很有用,在开发过程中用来运行测试之外,你不应该依赖它来运行你的应用程序。 想要更健壮的解决方案,使用Maven Assembly 插件。

2.浏览你的项目依赖

列出所有项目依赖:

Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序。 在任何其它的构建系统能够中,我们必须复制所有程序依赖到类似于 lib/ 的目录,这个目录包含一个 JAR 文件的集合。 那样,我们就必须写一个简单的脚本,在classpath 中包含我们程序的二进制代码和我们的依赖。 只有那样我们才能运行javaorg.sonatype.mavenbook.weather.Main 。 Exec 能做这样的工作是因为 Maven 已经知道如何创建和管理你的 classpath 和你的依赖。
如果你需要找出 classpath 中有什么,你可以使用 Maven Dependency 插件来打印出已解决依赖的列表。

mvn dependency:resolve

列出整个项目的依赖树:

项目的整个依赖树,你可以运行 dependency:tree 目标。

mvn dependency:tree

列出详细maven完整依赖踪迹:

想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行:

$ mvn install -X

编写定制单元测试

1.mvn运行测试

既然你的项目已经有单元测试了,那么让它们运行起来吧。 你不必为了运行单元测试做什么特殊的事情, test 阶段是 Maven 生命周期中常规的一部分。 当你运行 mvnpackage 或者 mvn install 的时候你也运行了测试。 如果你想要运行到 test 阶段为止的所有生命周期阶段,运行 mvn test 。

mvn test

从命令行运行 mvn test 使 Maven 执行到 test 阶段为止的所有生命周期阶段。
Maven Surefire 插件有一个 test 目标,该目标被绑定在了 test 阶段。 test 目
标执行项目中所有能在 src/test/java 找到的并且文件名与 /Test*.java , /
Test.java 和 */*TestCase.java 匹配的所有单元测试。 在本例中,你能看到
Surefire 插件的 test 目标执行了 WeatherFormatterTest 和 YahooParserTest 。
在 Maven Surefire 插件执行 JUnit 测试的时候,它同时也在basePath/target/surefire-reports 目录下生成 XML 和常规文本报告。 如果你的测试失败了,你可以去查看这个目录,里面有你单元测试生成的异常堆栈信息和错误信息。

2.忽略单元测试失败

当Maven 遇到一个测试失败,它默认的行为是停止当前的构建。 如果你希望继续构建项目,即使 Surefire 插件遇到了失败的单元测试,你就需要设置 Surefire 的testFailureIgnore 这个配置属性为 true :

<project>[...]    <build>        <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-surefire-plugin</artifactId>            <configuration>            <testFailureIgnore>true</testFailureIgnore>            </configuration>        </plugin>        </plugins>    </build>    [...]</project>

或者通过maven命令设置忽略测试失败:

mvn test -Dmaven.test.failure.ignore=true       

3.跳过单元测试

可能正工作在一个遗留系统上面,这个系统有一系列的失败的单元测试,你可能仅仅想要生成一个 JAR 而不是去修复所有的单元测试。 Maven 提供了跳过单元测试的能力,只需要使用 Surefire 插件的 skip 参数。 在命令行,只要简单的给任何目标添加maven.test.skip 属性就能跳过测试:

 mvn install -Dmaven.test.skip=true

或者在项目pom文件中配置插件skip属性来跳过单元测试:

<project>[...]    <build>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-surefire-plugin</artifactId>                <configuration>                    <skip>true</skip>                </configuration>            </plugin>        </plugins>    </build>[...]</project>   
0 0
原创粉丝点击