Maven的构建

1、编译项目

  切换到pom.xml所在目录,是由archetype:generate创建并执行以下命令来编译您的应用程序源:

mvn compile

  在执行这个命令时,您应该看到如下输出:

[INFO] ----------------------------------------------------------------------------
[INFO] Building Maven Quick Start Archetype
[INFO]    task-segment: [compile]
[INFO] ----------------------------------------------------------------------------
[INFO] artifact org.apache.maven.plugins:maven-resources-plugin: \
  checking for updates from central
...
[INFO] artifact org.apache.maven.plugins:maven-compiler-plugin: \
  checking for updates from central
...
[INFO] [resources:resources]
...
[INFO] [compiler:compile]
Compiling 1 source file to <dir>/my-app/target/classes
[INFO] ----------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ----------------------------------------------------------------------------
[INFO] Total time: 3 minutes 54 seconds
[INFO] Finished at: Fri Sep 23 15:48:34 GMT-05:00 2005
[INFO] Final Memory: 2M/6M
[INFO] ----------------------------------------------------------------------------

  第一次执行这个命令(或任何其他)命令时,Maven将需要下载所需的所有插件和相关的依赖项来完成该命令。从一个干净的Maven安装程序中,这可能需要相当长的时间(在上面的输出中,它花费了大约4分钟)。如果您再次执行该命令,Maven将拥有它所需要的内容,因此它不需要下载任何新的内容,并且能够更快地执行该命令。

  从输出中可以看到,编译后的类被放置在${basedir}/target/classes中,这是Maven使用的另一种标准约定。所以,如果你是一个敏锐的观察者,你会注意到,通过使用标准的约定,POM是非常小的,你没有必要告诉Maven你的任何来源或者输出应该到哪里去。通过遵循标准的Maven约定,您可以非常轻松地完成大量工作!作为一个比较随意的比较,让我们来看看你在Ant中可能需要做些什么来完成同样的事情。

  现在,这只是简单地编译一个应用程序源树,并且显示的Ant脚本与上面显示的POM大小差不多。但是,我们将看到,仅仅使用这个简单的POM,我们还能做更多的工作!

2、测试项目

  现在,您已经成功地编译了应用程序的源代码,现在已经有了一些您想要编译和执行的单元测试。

  执行以下命令:

mvn test

  在执行这个命令时,您应该看到如下输出:

[INFO] ----------------------------------------------------------------------------
[INFO] Building Maven Quick Start Archetype
[INFO]    task-segment: [test]
[INFO] ----------------------------------------------------------------------------
[INFO] artifact org.apache.maven.plugins:maven-surefire-plugin: \
  checking for updates from central
...
[INFO] [resources:resources]
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] [compiler:testCompile]
Compiling 1 source file to C:\Test\Maven2\test\my-app\target\test-classes
...
[INFO] [surefire:test]
[INFO] Setting reports dir: C:\Test\Maven2\test\my-app\target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
[surefire] Running com.mycompany.app.AppTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0 sec

Results :
[surefire] Tests run: 1, Failures: 0, Errors: 0

[INFO] ----------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ----------------------------------------------------------------------------
[INFO] Total time: 15 seconds
[INFO] Finished at: Thu Oct 06 08:12:17 MDT 2005
[INFO] Final Memory: 2M/8M
[INFO] ----------------------------------------------------------------------------

  关于输出的一些注意事项:

  • Maven这次下载了更多的依赖项。这些是执行测试所必需的依赖项和插件(它已经有了编译所需的依赖项,并且不会再次下载它们)。

  • 在编译和执行测试之前,Maven编译了主代码(所有这些类都是最新的,因为自从我们编译后,我们没有改变任何东西)。

  如果您只是想编译您的测试资源(但不执行测试),您可以执行以下操作:

mvn test-compile

3、打包项目

  制作一个JAR文件是非常直接的,并且可以通过执行以下命令来完成:

mvn package

  如果你看一下你的项目的POM,你会发现包装元素被设置为jar。这就是Maven如何从上面的命令生成一个JAR文件的方法(稍后我们将对此进行详细介绍)。现在您可以查看${basedir}/target目录,您将看到生成的JAR文件。

4、安装jar包到本地仓库中

  现在,您希望将已经生成的工件(JAR文件)安装到本地存储库中(${user.home}/.m2/repository是在默认的位置)。关于存储库的更多信息,您可以参考我们对存储库的介绍,但是让我们继续安装我们的工件!要执行以下命令:

mvn install

  在执行这个命令时,您应该看到以下输出:

[INFO] ----------------------------------------------------------------------------
[INFO] Building Maven Quick Start Archetype
[INFO]    task-segment: [install]
[INFO] ----------------------------------------------------------------------------
[INFO] [resources:resources]
[INFO] [compiler:compile]
Compiling 1 source file to <dir>/my-app/target/classes
[INFO] [resources:testResources]
[INFO] [compiler:testCompile]
Compiling 1 source file to <dir>/my-app/target/test-classes
[INFO] [surefire:test]
[INFO] Setting reports dir: <dir>/my-app/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
[surefire] Running com.mycompany.app.AppTest
[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.001 sec

Results :
[surefire] Tests run: 1, Failures: 0, Errors: 0

[INFO] [jar:jar]
[INFO] Building jar: <dir>/my-app/target/my-app-1.0-SNAPSHOT.jar
[INFO] [install:install]
[INFO] Installing <dir>/my-app/target/my-app-1.0-SNAPSHOT.jar to \
   <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
[INFO] ----------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ----------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Tue Oct 04 13:20:32 GMT-05:00 2005
[INFO] Final Memory: 3M/8M
[INFO] ----------------------------------------------------------------------------

  注意,肯定的插件(执行测试)查找包含特定命名约定的文件中包含的测试。默认情况下,测试包括:

  • **/*Test.java
  • **/Test*.java
  • **/*TestCase.java

  默认的不包括:

  • **/Abstract*Test.java
  • **/Abstract*TestCase.java

5、生成项目站点

mvn site

  该指令用于生成站点的基本信息

6、清理项目

mvn clean

  这将在启动之前删除所有构建数据的目标目录,以便它是新鲜的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值