maven 自動(dòng)化構(gòu)建
自動(dòng)化構(gòu)建定義了這樣一種場(chǎng)景: 在一個(gè)項(xiàng)目成功構(gòu)建完成后,其相關(guān)的依賴工程即開始構(gòu)建,這樣可以保證其依賴項(xiàng)目的穩(wěn)定。
比如一個(gè)團(tuán)隊(duì)正在開發(fā)一個(gè)項(xiàng)目 bus-core-api, 并且有其他兩個(gè)項(xiàng)目 app-web-ui 和 app-desktop-ui 依賴于這個(gè)項(xiàng)目。
app-web-ui 項(xiàng)目使用的是 bus-core-api 項(xiàng)目的 1.0 快照:
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>app-web-ui</groupid> <artifactid>app-web-ui</artifactid> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupid>bus-core-api</groupid> <artifactid>bus-core-api</artifactid> <version>1.0-snapshot</version> </dependency> </dependencies> </project>
app-desktop-ui 項(xiàng)目使用的是 bus-core-api 項(xiàng)目的 1.0 快照:
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>app-desktop-ui</groupid> <artifactid>app-desktop-ui</artifactid> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupid>bus-core-api</groupid> <artifactid>bus-core-api</artifactid> <version>1.0-snapshot</version> </dependency> </dependencies> </project>
bus-core-api 項(xiàng)目:
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>bus-core-api</groupid> <artifactid>bus-core-api</artifactid> <version>1.0-snapshot</version> <packaging>jar</packaging> </project>
現(xiàn)在 app-web-ui 和 app-desktop-ui 項(xiàng)目的團(tuán)隊(duì)要求不管 bus-core-api 項(xiàng)目何時(shí)變化,他們的構(gòu)建過程都應(yīng)當(dāng)可以啟動(dòng)。
使用快照可以確保最新的 bus-core-api 項(xiàng)目被使用,但要達(dá)到上面的要求,我們還需要做一些額外的工作。
可以使用兩種方式:
- 在 bus-core-api 項(xiàng)目的 pom 文件中添加一個(gè) post-build 目標(biāo)操作來啟動(dòng) app-web-ui 和 app-desktop-ui 項(xiàng)目的構(gòu)建。
- 使用持續(xù)集成(ci) 服務(wù)器,比如 hudson,來自行管理構(gòu)建自動(dòng)化。
1.使用 maven
修改 bus-core-api 項(xiàng)目的 pom.xml 文件。
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>bus-core-api</groupid> <artifactid>bus-core-api</artifactid> <version>1.0-snapshot</version> <packaging>jar</packaging> <build> <plugins> <plugin> <artifactid>maven-invoker-plugin</artifactid> <version>1.6</version> <configuration> <debug>true</debug> <pomincludes> <pominclude>app-web-ui/pom.xml</pominclude> <pominclude>app-desktop-ui/pom.xml</pominclude> </pomincludes> </configuration> <executions> <execution> <id>build</id> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
打開命令控制臺(tái),切換到 c:\ > mvn > bus-core-api 目錄下,然后執(zhí)行以下命令。
c:\mvn\bus-core-api>mvn clean package -u
執(zhí)行完命令后,maven 將開始構(gòu)建項(xiàng)目 bus-core-api。
[info] scanning for projects... [info] ------------------------------------------------------------------ [info] building bus-core-api [info] task-segment: [clean, package] [info] ------------------------------------------------------------------ ... [info] [jar:jar {execution: default-jar}] [info] building jar: c:\mvn\bus-core-ui\target\ bus-core-ui-1.0-snapshot.jar [info] ------------------------------------------------------------------ [info] build successful [info] ------------------------------------------------------------------
bus-core-api 構(gòu)建成功后,maven 將開始構(gòu)建 app-web-ui 項(xiàng)目。
[info] ------------------------------------------------------------------ [info] building app-web-ui [info] task-segment: [package] [info] ------------------------------------------------------------------ ... [info] [jar:jar {execution: default-jar}] [info] building jar: c:\mvn\app-web-ui\target\ app-web-ui-1.0-snapshot.jar [info] ------------------------------------------------------------------ [info] build successful [info] ------------------------------------------------------------------
app-web-ui 構(gòu)建成功后,maven 將開始構(gòu)建 app-desktop-ui 項(xiàng)目。
[info] ------------------------------------------------------------------ [info] building app-desktop-ui [info] task-segment: [package] [info] ------------------------------------------------------------------ ... [info] [jar:jar {execution: default-jar}] [info] building jar: c:\mvn\app-desktop-ui\target\ app-desktop-ui-1.0-snapshot.jar [info] ------------------------------------------------------------------- [info] build successful [info] -------------------------------------------------------------------
2.使用持續(xù)集成服務(wù)器(ci):
如果使用 ci 服務(wù)器更,我們每次的一個(gè)新項(xiàng)目,比如說實(shí)例中的 app-mobile-ui,添加為依賴 bus-core-api 項(xiàng)目時(shí),開發(fā)者就不需要更新 bus-core-api 項(xiàng)目的 pom。hudson 將會(huì)借助 maven 的依賴管理功能實(shí)現(xiàn)工程的自動(dòng)化創(chuàng)建。
hudson 把每個(gè)項(xiàng)目構(gòu)建當(dāng)成一次任務(wù)。在一個(gè)項(xiàng)目的代碼提交到 svn (或者任何映射到 hudson 的代碼管理工具)后,hudson 將開始項(xiàng)目的構(gòu)建任務(wù),并且一旦此構(gòu)建任務(wù)完成,hudson 將自動(dòng)啟動(dòng)其他依賴的構(gòu)建任務(wù)(其他依賴項(xiàng)目的構(gòu)建)。
在上面的例子中,當(dāng) bus-core-ui 源代碼在 svn 更新后,hudson 開始項(xiàng)目構(gòu)建。一旦構(gòu)建成功,hudson 自動(dòng)地查找依賴的項(xiàng)目,然后開始構(gòu)建 app-web-ui 和 app-desktop-ui 項(xiàng)目。
- JDBC 教程
- JDBC 驅(qū)動(dòng)類型
- JDBC 連接數(shù)據(jù)庫(kù)范例
- JDBC 連接數(shù)據(jù)庫(kù)步驟
- JDBC Statement, PreparedStatement 和 CallableStatement
- JDBC ResultSet 結(jié)果集
- JDBC Resultset 結(jié)果集范例
- JDBC 事務(wù)保存點(diǎn)范例
- Scala 教程
- Scala 簡(jiǎn)介
- Scala 類和對(duì)象
- Scala 文件 I/O
- Spring 教程
- Spring 模塊
- Spring 依賴注入
- Spring 自動(dòng)裝配
- Spring MVC教程
- Spring MVC表單標(biāo)簽庫(kù)
- Spring security