剛剛把一個開源的項目變成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文件無法找到上一級的文件多半是你的id和ver寫錯了,再認真檢查一遍可能就會發現自己犯的錯誤。