使用Maven来管理工程


为什么要使用Maven,及我是如何使用Maven的


1. 为什么要使用Maven

在使用Maven之前,我是这样来管理所使用到Java包的。下面以使用 commons-lang 为例进行说明:

  1. 先从Apache网站下载最新的Lang包(包括Jar包 commons-lang3-3.1.jar 、源码包 commons-lang3-3.1-sources.jar)
  2. 将下载得到的包按照某种规律存放好,我是放在 D:\Java\Apache\Commons\ 目录下
  3. 在Eclipse创建一个用户自定义的Library,名为: Apache-Commons-Lang-3,同时将Jar包和源码包相关联(这样才能在Eclipse中查看对应的代码)
  4. 在自己的工程中引用自定义的Library: Apache-Commons-Lang-3

可以看出,上面的步骤比较繁琐。并且更大的问题是在其它机器上想要编译时,就会导致需要将 D:\Java\ 目录拷贝过去,然后还要将定义的 Library 导入到Eclipse中,才能正常工作。

而如果是直接将 Jar包、源码包 全部打入工程,当然是可行的,但这又会带来极度占用空间的问题。 写个小工程,也就3、5K代码,由于引入了一大堆Jar包,结果整个工程变成几兆、乃至几十兆的大小。

如果使用 Maven 来管理工程,事情就变得简单了,只要

  1. 在机器上安装好 Maven
  2. 在 pom.xml 中配置好涉及到的Jar包
  3. 执行命令 mvn clean compile , Maven就会自动下载相应的Jar包进行编译

至于源码和Jar包关联,也不再需要我们手工指定了。只需要在Eclipse中安装 M2Eclipse 插件即可,当在Eclipse中点击查看Jar包中的一个类时,该插件会自动下载对应的源码包,实现源码和类的关联。

2. 我是怎么使用的

##2.1 搭建了私服(Private Repository)

先使用 Apache Archiva 搭建了一个私服。

1.4版本的界面不错,远比1.3好用,虽然目前还只是1.4-M3版本,但已经可以满足基本需求了。如果不需要考虑用户访问权限问题,只需要启动服务器、添加一个admin用户即可使用。

##2.2 修改用户级 settings.xml

将 $M2_HOME/conf/settings.xml 拷贝到 ~/.m2/目录下,然后修改 ~/.m2/settings.xml 文件

1 . 修改本地仓库(Local Repository的路径)

    <localRepository>D:\Java\repository</localRepository>

2 . 添加一个 中央仓库(Central Repository) 的 Mirror

	<mirror>
      <id>MirrorCentral</id>
      <mirrorOf>central</mirrorOf>
      <name>Mirror for central.</name>
      <url>http://localhost:8080/repository/internal</url>
    </mirror>

上面配置的URL为 Archiva 服务器缺省的 internal repository 的地址。

##2.3 修改工程属性

将以前工程的 .classpath , .project 文件删除,新增一个 pom.xml 文件。

在pom.xml 中指定所要引用的Jar包。同时删除 lib 目录下相应的jar包。理论上所有jar包都应该通过 Maven 来获取。

然后通过 M2Eclipse 所提供的 Import Existing Maven Projects 功能来导入工程。

##2.4 预执行命令

安装 Maven 只是安装了核心部件,真正需要运行,还需要下载很多插件。

可以通过执行 prepare_maven.sh 来确保安装基本的插件。

参考


声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权,转载请注明出处。