maven项目的多级目录

刚刚把一个开源的项目变成maven项目来进行管理,由于是多级的目录(以前配置的都是单级的目录),所以记录一下pom文件是怎么配置的。

 

一、目录结构

如下,maven的结构图,红字是表示完整的项目

 

二、建立pom文件

那么,首先在每个目录先建立一个pom文件,以便maven能搜索到每个项目。

 

(一)Trunk下的pom文件是主pom文件,里面定义好全局的变量
部分代码:

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.cpacm.demo</groupId>
    <artifactId>cpacm-talkback</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <description>
    talkback
    </description>
    <!-- 子模块声明 -->
    <modules>
        <!-- ###lib### -->
        <module>libraries</module>
        <!-- ###apk### -->
        <module>accessibilityServices</module>
    </modules>
    <!-- 全局属性约定 -->
       <properties>
       </properties>

包含两个子目录中的项目libraries和accessibilityServices

(二)accessibilityServices下的pom文件

 

    <parent>
        <artifactId>cpacm-talkback</artifactId>
        <groupId>com.cpacm.demo</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>accessibilityServices</artifactId>
    <packaging>pom</packaging>
    <name>accessibilityServices</name>
    <description>。。。。</description>

    <!-- 子模块声明 -->
    <modules>
        <!-- ###lib### -->
        <module>talkback</module>
    </modules>

 

Parent节点中的信息要与父pom中(即trunk下的pom文件)的信息一一对应,因为maven会根据groupId:artifactId:version来进行搜索 有一项不对就会匹配不上。(这里的version没 写,默认跟父pom一样),声明是pom类型,因为这不是个实际的项目

子模块是talkback

 

    <parent>
        <artifactId>accessibilityServices</artifactId>
        <groupId>com.cpacm.demo</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>talkback</artifactId>
    <packaging>apk</packaging>
    <name>talkback</name>
    <description>talkback</description>

 

这里就很明白了,一个apk类型的项目(Android

(三)Libraries下的pom文件

 

    <parent>
        <artifactId>cpacm-talkback</artifactId>
        <groupId>com.cpacm.demo</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>libraries</artifactId>
    <packaging>pom</packaging>
    <name>libraries</name>
    <description>。。。。</description>

    <!-- 子模块声明 -->
    <modules>
        <!-- ###lib### -->
        <module>commandslib</module>
        <module>actionslib</module>
        <module>compatutils</module>
        <module>utils</module>
        <module>widgets</module>
    </modules>

 

跟上面的pom文件一样的结构

每个库下的pom文件就省略不写了,跟talkback下的pom文件一样,只不过类型变成

<packaging>apklib</packaging>

 

总结

Pom文件无法找到上一级的文件多半是你的idver写错了,再认真检查一遍可能就会发现自己犯的错误。

 

 

 

 

posted @ 2014-11-21 13:18  cpacm  阅读(4035)  评论(0编辑  收藏  举报