您好,登錄后才能下訂單哦!
maven的基本使用是怎樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
Apache Maven 是一套軟件工程管理和整合工具。 它是基于工程對象模型( Project Object Model ,POM)的概念,通過一個中央信息管理模塊,Maven 能夠管理項目的構建、報告和文檔。說白了maven項目就是通過一個pom.xml實現對工程的管理,項目的測試、打包、部署等一應俱全的功能,用好了maven插件,簡直事半功倍!Maven 是基于 Java 的工具,所以要做的第一件事情就是安裝 JDK。
Maven 能夠幫助開發者完成以下工作:
構建
文檔生成
報告
依賴
SCMs
發布
分發
郵件列表
總的來說,Maven 簡化了工程的構建過程,并對其標準化。它無縫銜接了編譯、發布、文檔生成、團隊合作和其他任務。Maven 提高了重用性,負責了大部分構建相關的任務。
開發者不需要再關心每一個配置細節。Maven 為工程提供了合理的默認行為。當創建 Maven 工程時,Maven 會創建默認的工程結構。開發者只需要合理的放置文件,而在 pom.xml 中不再需要定義任何配置。
Maven 使用約定而不是配置,意味著開發者不需要再自己創建構建過程。maven內置變量如下:
${basedir}表示項目根目錄,即包含pom.xml文件的目錄; ${version}表示項目版本; ${project.basedir}同${basedir}; ${project.baseUri}表示項目文件地址; ${maven.build.timestamp}表示項目構件開始時間; ${maven.build.timestamp.format}表示屬性${maven.build.timestamp}的展示格式,默認值為yyyyMMdd-HHmm,可自定義其格式,其類型可參考java.text.SimpleDateFormat。 ${project.build.directory}表示主源碼路徑; ${project.build.sourceEncoding}表示主源碼的編碼格式; ${project.build.sourceDirectory}表示主源碼路徑; ${project.build.finalName}表示輸出文件名稱; ${project.version}表示項目版本,與${version}相同; ${project.xxx} 當前pom文件的任意節點的內容 ${env.xxx} 獲取系統環境變量。 ${settings.xxx} 指代了settings.xml中對應元素的值。
一個工程僅有一個pom文件,那么如何唯一標記當前 工程呢?
所有的 POM 文件需要 project 元素和三個必須的字段:groupId, artifactId,version。
在倉庫中的工程標識為 groupId:artifactId:version
POM.xml 的根元素是 project,它有三個主要的子節點:
<groupId>com.companyname.project-group</groupId> <artifactId>project</artifactId> <version>1.0</version>
groupId:公司域名倒寫 artifactId: 當前項目名稱 version: 版本號
當執行一個任務或者目標時,Maven 會查找當前目錄下的 POM,從其中讀取所需要的配置信息,然后執行目標。能夠在 POM 中設置的一些配置如下:
project dependencies
plugins
goals
build profiles
project version
developers
mailing list
更加詳細的內容可以 到 pom.xml 所在的目錄下執行以下 mvn 命令 mvn help:effective-pom ,查看完整的內容。
maven對構建(build)的過程進行了抽象和定義,這個過程被稱為構建的生命周期(lifecycle)。生命周期(lifecycle)由多個階段(phase)組成,每個階段(phase)會掛接一到多個goal。goal是maven里定義任務的最小單元,goal分為兩類,一類是綁定phase的,就是執行到某個phase,那么這個goal就會觸發,另外一類不綁定,就是單獨任務,這就相當于ant里的target。
以clean生命周期為例,當我們執行 mvn post-clean 命令時,Maven 調用 clean 生命周期,它包含以下階段:
pre-clean:執行一些需要在clean之前完成的工作
clean:移除所有上一次構建生成的文件
post-clean:執行一些需要在clean之后立刻完成的工作
mvn clean 中的 clean 就是上面的 clean,在一個生命周期中,運行某個階段的時候,它之前的所有階段都會被運行,也就是說,如果執行 mvn clean 將運行以下兩個生命周期階段:
pre-clean, clean
如果我們運行 mvn post-clean ,則運行以下三個生命周期階段:
pre-clean, clean, post-clean
使用構建配置文件,你可以為不同的環境,比如說生產環境(Production)和開發(Development)環境,定制構建方式。
配置文件在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通過各種方式觸發。配置文件在構建時修改 POM,并且用來給參數設定不同的目標環境(比如說,開發(Development)、測試(Testing)和生產環境(Production)中數據庫服務器的地址)。
場景:開發環境下和生產環境下的配置文件肯定不一樣,如何通過profile來控制呢?
假設 在src/main/resources文件夾下有三個用于測試文件:
那么在pom.xml文件下做如下配置:
<profile> <id>normal</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.properties</echo> <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>prod</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.prod.properties</echo> <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}/env.properties" overwrite="true"/> </tasks> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles>
使用 pom.xml 來定義不同的 profile,并使用 maven 命令可以激活不同的 profile。
mvn test -Pnormal
將會激活id為normal的環境
打開 %USER_HOME%/.m2 目錄下的 settings.xml 文件,其中 %USER_HOME% 代表用戶主目錄。如果 setting.xml 文件不存在就直接拷貝 %M2_HOME%/conf/settings.xml 到 .m2 目錄,其中 %M2_HOME% 代表 Maven 的安裝目錄。
配置 setting.xml 文件,增加 <activeProfiles>屬性:
<settings 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/settings-1.0.0.xsd"> ... <activeProfiles> <activeProfile>test</activeProfile> </activeProfiles> </settings>
執行命令:
mvn test
此時不需要使用 -Ptest 來輸入參數了,上面的 setting.xml 文件的 <activeprofile> 已經指定了 test 參數代替了。
除此之外,還可以通過環境變量激活。
通常,可以在setting文件里設置如下的倉庫源,可以快速下載相應的jar包
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
看完上述內容,你們掌握maven的基本使用是怎樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。