您好,登錄后才能下訂單哦!
這篇文章主要介紹“Maven命令怎么使用”,在日常操作中,相信很多人在Maven命令怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Maven命令怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
如何快速創建一個 Maven 項目,可以通過 Maven 的 Archetype 來進行創建,Archetype 是 Maven 提供的各種各樣的工程模板,通過這些模板可以生成不同的 Maven 項目結構。
Maven 提供的 Archetype 列表如下:
Archetype ArtifactIds | Description |
---|---|
maven-archetype-archetype | generate a sample archetype project. |
maven-archetype-j2ee-simple | generate a simplifed sample J2EE application. |
maven-archetype-mojo | generate a sample a sample Maven plugin. |
maven-archetype-plugin | generate a sample Maven plugin. |
maven-archetype-plugin-site | generate a sample Maven plugin site. |
maven-archetype-portlet | generate a sample JSR-268 Portlet. |
maven-archetype-quickstart | generate a sample Maven project. |
maven-archetype-simple | generate a simple Maven project. |
maven-archetype-site | generate a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site. |
maven-archetype-site-simple | generate a sample Maven site. |
maven-archetype-webapp | generate a sample Maven Webapp project. |
這里我們選擇 maven-archetype-quickstart
這個模板進行快速創建,因為它提供了一個標準的項目結構,基于這個基本項目結構可以進行后續擴展。
project |-- pom.xml `-- src |-- main | `-- java | `-- $package | `-- App.java `-- test `-- java `-- $package `-- AppTest.java
1)通過 Maven 命令
Maven 提供了命令快速創建 Maven 項目:
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4
命令中指定我們前面所說的 Maven Archetype:maven-archetype-quickstart
信息。
運行過程中會提示讓你輸入項目的 Naven 坐標信息,直到創建完成。基礎部分這里不撰述了,需要完整 Maven 教程的關注公眾號Java技術棧在后臺回復"mvn"獲取。
2)通過 IDEs
通過 IDE 也能快速創建 Maven 項目,現在 Java IDEs 都支持 Maven 或者自帶 Maven 插件,下面以 Intellij IDEA
為例進行創建。
選擇 maven-archetype-quickstart
:
輸入項目的 Naven 坐標信息:
選擇 Maven 及倉庫設置信息:
等待項目構建完成,如下所示:
項目生成后,我們就可以把原系統的文件移到新的 Maven 項目了,因生成的項目結構比較簡單,Maven 提供的 maven-archetype-webapp
模板也不符合要求:
我們的項目性質又是后臺系統,涉及到方方面面,所以還需要再完善其他資源目錄的創建:
- src - main - java - resources - filters - webapp - test - java - resources
這是一個比較標準的 Maven Web 項目結構,我把它弄成了一個基礎腳手架,還集成了各種現成的插件和功能,后面其他項目轉 Maven 可以直接拿來套用。
已經上傳到了 Github:
https://github.com/javastacks/maven-demo-project
主要目錄結構介紹:
目錄 | 說明 |
---|---|
src/main/java | 源代碼目錄 |
src/main/resources | 資源目錄 |
src/main/filters | 多環境配置過濾目錄 |
src/main/webapp | Web應用文件目 |
src/test/java | 測試代碼目錄 |
src/test/resources | 測試資源目錄 |
所有目錄創建完后,再根據文件性質把原系統所有除了(*.jar)文件移到對應的目錄,這里沒什么難度。
配置 Maven 環境信息:
<build> <filters> <filter>src/main/filters/filter-${env}.properties</filter> </filters> <resources> <resource> <directory>src/main/resources/config</directory> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources/resource</directory> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>${maven-war-plugin.version}</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <env>dev</env> </properties> </profile> <profile> <id>test</id> <properties> <env>test</env> </properties> </profile> <profile> <id>mirror</id> <properties> <env>mirror</env> </properties> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> </profile> </profiles>
依賴轉換就是要把所有原系統的(*.jar)依賴包全部轉換為 Maven 依賴管理,這里是難點,要解決編譯、啟動、運行時遇到的 jar 包沖突、版本沖突等異常。
我的思路是先把一些核心框架的依賴進行轉換,再進行一些比較獨立的公共工具包的轉換,最后就是一些不熟悉的依賴轉換。
引入 Maven 依賴的時候,看下其所有附屬的所有依賴,再逐漸從 lib 目錄刪除,直到全部刪除完成即轉換完成。
在找對應依賴的時候,如果中央倉庫找不到,其他遠程倉庫能找到的,就在公司私庫中添加該包所在的遠程倉庫代理配置。
如果中央倉庫或者其他遠程倉庫都找不到的,比如第三方的 SDK 包,就上傳到公司私庫。怎么上傳到私庫,點擊這里閱讀,更多 Maven 教程在公眾號Java技術棧回復maven進行閱讀。
根據 JAR 包找 Maven 依賴的時候,可能有多個名稱一樣的依賴,不知道引用哪個,這時候需要去原始 JAR 包中看下包名,根據包名就大概知道坐標信息了。
依賴傳遞:
在依賴轉換過程中,如果一個依賴又依賴了其他依賴,可以直接引用父依賴即可,如在老項目中存在:poi、poi-ooxm、poi-ooxml-schemas 這三個依賴:
但在 POI 依賴體系中,poi-ooxml
包又需要依賴其他兩個包,所以只需要引入 poi-ooxml
依賴即可:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency>
這樣就把這個包需要依賴的其他包都引進來了,這就是 Maven 管理依賴的好處,不會出現多包少包的情況,也能盡量避免依賴沖突。
依賴范圍:
在老項目中,所有 jar 包都在 web-inf/lib 目錄下,如:Servlet、JUnit,這些包在打完生產包之后也還在目錄下,沒有生命周期的管理。
在 Maven 中就能控制它們的生命周期:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${javax.servlet-api.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency>
Servlet 只需要編譯時用到,JUnit 只需要測試時用到,控制好每個包的依賴范圍,做到每個包的作用范圍最小化。
解決沖突:
當傳遞的依賴版本不符合,或者是同一個包出現不同版本導致沖突的時候要學會使用排除:
或者強制指定包版本:
<dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId> <version>${bctsp-jdk16.version}</version> </dependency>
有的時候,還要根據需要使用 classifier
指定不同 JDK 的版本:
<dependency> <groupId>com.test</groupId> <artifactId>test</artifactId> <version>${test.version}</version> <classifier>JDK6</classifier> </dependency>
如源代碼編譯報錯,不知道引用的哪個 JAR 包、或者哪個版本,可以到原始項目中點對應的類引用進去看就知道了。
整個改造過程比較順利,就是編譯和運行時需要解決一些 JAR 包沖突導致的問題,根據上面的種種方法直至編譯、啟動正常。
到此,關于“Maven命令怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。