maven使用
1、maven項(xiàng)目的核心是pom.xml(Poject Object Model ,項(xiàng)目對象模型)定義了項(xiàng)目基本信息,用于描述項(xiàng)目如何構(gòu)建、聲明項(xiàng)目依賴等,示例pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.su.mvnbook</groupId>
? ? <artifactId>maven-test</artifactId>
? ? <version>1.0-SNAPSHOT</version>
? ? <name>exam_test</name>
</project>
2、groupId、artifactId、version? 定義了一個maven項(xiàng)目的坐標(biāo)
? ?groupId? 定義項(xiàng)目屬于哪個組,這個組往往和項(xiàng)目所在的組織或者公司關(guān)聯(lián)。這里公司為su,項(xiàng)目為mvnbook
? ?artifactId 定義了當(dāng)前 maven 項(xiàng)目在組中唯一的id,我們這個項(xiàng)目為maven-test
? ? version定義的項(xiàng)目的版本??1.0-SNAPSHOT,? SNAPSHOT意為快照,表示該項(xiàng)目還處于開發(fā)中,是不穩(wěn)定的版本,隨著項(xiàng)目的發(fā)展,version會不斷升級,比如升級為1.0、1.1-SNAPSHOT、1.1等
3、maven打包
打包的話pom中不指定,默認(rèn)使用的打包類型為Jar,簡單地執(zhí)行命令:? mvn clean? package? ,maven會在打包前執(zhí)行編譯、測試等操作。
jar 任務(wù)負(fù)責(zé)打包,實(shí)際上就是jar插件的jar目標(biāo)將項(xiàng)目主代碼打包成一個名為? exam_test-1.0-SNAPSHOT.jar的文件。該文件位于target/輸出目錄中,它是根據(jù)artifactId-version.jar規(guī)則進(jìn)行命名的,如有需要,還可以使用finalName來自定義該文件名稱。
怎樣才能讓其他的maven項(xiàng)目直接引用這個Jar呢,只需要執(zhí)行mvn? ?clean install? ,執(zhí)行該命令后該項(xiàng)目輸出的Jar被安裝到了maven本地倉庫中。
maven 最主要命令有:
? ? ? ? ? ? ? ? ? ? ? ? maven clean compile
? ? ? ? ? ? ? ? ? ? ? ? mvn clean test
? ? ? ? ? ? ? ? ? ? ? ? mvn clean package
? ? ? ? ? ? ? ? ? ? ? ? mvn clean install?
執(zhí)行test之前要先執(zhí)行compile,執(zhí)行package之前是會先執(zhí)行test的,install? 前執(zhí)行package。
4、運(yùn)行項(xiàng)目
默認(rèn)生成的jar包是不能夠直接運(yùn)行的,因?yàn)閹в衜ain方法的類信息不會添加到manifest中,為了生成可執(zhí)行的jar文件,需要借助maven-shade-plugin插件,配置如下:
