Maven 2.0: Compile, Test, Run, Deploy, and More(2)

配置存储库

要求项目的每个开发者必须在conf目录中 配置存储库是不方便的,所以Maven可以同时查看多个存储库并且将它们全部配置在pom.xml文件中。让我们看看一个例子,它展示了如何在应用程序用 使用多个存储库。在以下从pom.xml文件摘录的片断中,我们设置了两个存储库来让Maven寻找依赖项。Ibiblio一直是默认的存储库,我们又添 加了Planet Mirror作为后援存储库。我们也可以让团队使用的本地web服务器作为第二个存储库。

<repositories>   
    <repository>      
        <id>Ibiblio</id>      
        <name>Ibiblio</name>      
        <url>http://www.ibiblio.org/maven/</url>   
    </repository>
    <repository>      
        <id> PlanetMirror </id>      
        <name> Planet Mirror </name>      
        <url> http://public.planetmirror.com/pub/maven/ </url>   
   </repository>  
</repositories>

使用pom.xml父文件来构建多个项目

软件公司通常的一种做法就是将多个项目构建到主要产品中。维护依赖关系链和一次性地构建整个产品足以成为一个挑战,但是如果使用Maven的话,事情将变 得 简单。如果您创建了一个指向其它子模块的pom.xml父文件,Maven将为您处理整个构建过程。它将分析每个子模块的pom.xml文件,并且按照这 些子模块的相互依赖顺序来构建项目。如果每个项目明确地指明它们的依赖项,那么子模块在父文件中的放置顺序是不造成任何影响的。但是考虑到其他的开发者, 最好保证子模块在pom.xml父文件中的放置顺序和您期望的子项目被构建的顺序一样。下面我们看个示例。
pom.xml主文件如下:

<project>  
        <modelVersion>4.0.0</modelVersion>  
        <groupId>com.oreilly</groupId>  
        <version>1.0-SNAPSHOT</version>  
        <artifactId>my-app</artifactId>  
        <packaging>pom</packaging>  
        <modules>   
            <module>Common</module>   
            <module>Utilities</module>   
            <module>Application</module>     
            <module>WebApplication</module>  
        </modules>
</project>

我们需要确保WebApplication子模块包含了所有的三个jar包,所以需要将这些jar包声明为依赖项。在这个例子中,Utilities项目 依 赖于Common项目,所以Utilities项目中需要添加一个对Common项目的依赖。Application子模块也是同样的道理,因为它依赖于 Common和Utilities项目,Utilities又赖于Common。如果这个例子中有60个子模块,并且它们都相互依赖,这会使得新开发者难 以算出什么项目依赖于其它项目,所以这正好是要求确保pom.xml父文件中项目放置顺序要清除的原因。

以下是Utility模块的依赖项:

<dependencies>   
        <dependency>      
            <groupId>com.oreilly</groupId>      
            <artifactId>Common</artifactId>      
            <version>1.0-SNAPSHOT</version>   
        </dependency>  
</dependencies>

以下是如何声明Application模块的依赖项:

<dependencies>   
    <dependency>      
        <groupId>com.oreilly</groupId>     
         <artifactId>Common</artifactId>     
         <version>1.0-SNAPSHOT</version>   
    </dependency>
    <dependency>      
        <groupId>com.oreilly</groupId>      
        <artifactId>Utilities</artifactId>      
        <version>1.0-SNAPSHOT</version>   
</dependency>  
</dependencies>

最后是WebApplication模块的依赖项:

<dependencies>   
    <dependency>      
        <groupId>com.oreilly</groupId>      
        <artifactId>Common</artifactId>      
        <version>1.0-SNAPSHOT</version>   
    </dependency>   
   
    <dependency>      
        <groupId>com.oreilly</groupId>      
        <artifactId>Utilities</artifactId>      
        <version>1.0-SNAPSHOT</version>   
    </dependency>        

    <dependency>      
        <groupId>com.oreilly</groupId>      
        <artifactId>Application</artifactId>      
        <version>1.0-SNAPSHOT</version>   
    </dependency>     
</dependencies>

现在,我们只需为每个子模块的pom.xml文件添加一个元素来表明它们是一个逻辑构建的一部分:

<parent>   
    <groupId>com.oreilly</groupId>   
    <artifactId>my-app</artifactId>   
    <version>1.0-SNAPSHOT</version>  
</parent>

在pom.xml父文件所在的同一个目录中,存在有项目目录:Common, Utilities, Application, 和WebApplication。当我们在该目录中运行mvn package命令时,这些项目会按照依赖顺序而被构建。

插件和报表

Maven2.0 有大量的插件可以使用。不幸的是,由于Maven的重写,Maven1.0的插件不能在2.0中使用。尽管如此,还是存在一些可以使用的Maven2.0 的插件。下面pom.xml文件中的插件配置示例是直接从Maven2.0网站上得来的。这个插件是用来配置编译选项的。

<plugins>   
    <plugin>      
        <groupId>org.apache.maven.plugins</groupId>      
        <artifactId>maven-compiler-plugin</artifactId>      
        <configuration>        
            <source>1.5</source>        
            <target>1.5</target>      
            </configuration>   
        </plugin>
</plugins>

Maven报表插件可以用来生成不同的报表,这些报表是在当你使用mvn site命令生成项目的站点时产生的。下面的例子展示了如何使用<reporting>元素来配置这类插件中的一个。

<reporting>   
    <plugins>      
        <plugin>        
            <groupId>org.apache.maven.plugins</groupId>        
            <artifactId>maven-project-info-reports-plugin</artifactId>      
         </plugin>   
    </plugins>  
</reporting>

Maven Plugin Matrix是一个十分实用的工具,它能给出哪些Maven插件适合于哪些版本的Maven。

Maven 和 Eclipse

如 何能使全世界最好的IDE变得更好了?答案是使用Maven2的插件,它能帮助您寻找依赖项并自动地将它们添加到pom.xml文件中。虽然最好的方法是 首先使用Maven来创建您的项目,然后再用命令mvn eclipse:eclipse来生成Eclipse项目文件,这样最初就能得到一个好的目录结 构,但Maven也可通过其Eclipse插件来管理任何项目。

您可以在Eclipse自身的升级器中输入站点http: //m2eclipse.codehaus.org/来安装插件。在安装完成并重启IDE后,您需要在Eclipse的参数选项中配置此插件,设置本地存 储库的位置。这是很重要的一步,因为如果Eclipse默认的存储库不能匹配您默认的需求,Maven会重新下载您的依赖项。配置完成后,将项目导入 Eclipse,鼠标右击该项目,选择Maven 2 -> Enable。现在您可以回到之前的步骤,您可以有更多的选项比如添加依赖项,这将弹 出一个搜索框,您可以搜索依赖项并添加它们,插件会替你编辑pom.xml文件。

插件会使用Maven来构建您的项目,就像Eclipse使用Ant来构建项目一样。如果您想获取更多的关于Eclipse整合Maven的信息,可以查阅Maven站点上的Eclipse集成Maven 2.x使用指南。

另一方面,如果您是一个IntelliJ使用爱好者,您也能通过运行指令mvn idea:idea来完成同样的任务。这些IDE        工具能够 节省开发人员的时间。例如,如果一个开发人员为一个项目添加了一些特征,团队里的其他开发人员只需从源代码控制器的存储库中重新获取项目文件即可,这就节 省了每个开发人员必须配置IDE的时间。

结论

Maven2.0有着许多实用的特点,并且完成任务十分出色。Maven中 最值得称赞的地方就是使用了标准的目录结构和部署。这就使得开发人员能够适应不同的项目,并且不用学习任何结构方面新的东西,也不用掌握特殊的指令来构建 结构。Maven可以通过纯脚本来实现。在文档方面,由于使用了项目站点构建工具,所以当项目构建完成后,您可以查看所有开发的当前状态。

毫无疑问,当提到构建配置的伸缩性,易用性和项目管理方面时,Maven2.0足可以将Ant取而代之。在接下来的几年内,我们将看到Maven作为标准构 建技术更多的使用,直到有人带来了大家公认的“高级捕鼠器”。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值