91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Maven命令怎么使用

發布時間:2021-12-14 14:45:16 來源:億速云 閱讀:153 作者:iii 欄目:大數據

這篇文章主要介紹“Maven命令怎么使用”,在日常操作中,相信很多人在Maven命令怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Maven命令怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

快速創建一個 Maven 項目

Maven Archetype 介紹

如何快速創建一個 Maven 項目,可以通過 Maven 的 Archetype 來進行創建,Archetype 是 Maven 提供的各種各樣的工程模板,通過這些模板可以生成不同的 Maven 項目結構。

Maven 提供的 Archetype 列表如下:

Archetype ArtifactIdsDescription
maven-archetype-archetypegenerate a sample archetype project.
maven-archetype-j2ee-simplegenerate a simplifed sample J2EE application.
maven-archetype-mojogenerate a sample a sample Maven plugin.
maven-archetype-plugingenerate a sample Maven plugin.
maven-archetype-plugin-sitegenerate a sample Maven plugin site.
maven-archetype-portletgenerate a sample JSR-268 Portlet.
maven-archetype-quickstartgenerate a sample Maven project.
maven-archetype-simplegenerate a simple Maven project.
maven-archetype-sitegenerate 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-simplegenerate a sample Maven site.
maven-archetype-webappgenerate a sample Maven Webapp project.

這里我們選擇 maven-archetype-quickstart 這個模板進行快速創建,因為它提供了一個標準的項目結構,基于這個基本項目結構可以進行后續擴展。

project
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- $package
    |           `-- App.java
    `-- test
        `-- java
            `-- $package
                `-- AppTest.java
生成 Maven 項目

1)通過 Maven 命令

Maven 提供了命令快速創建 Maven 項目:

mvn archetype:generate
-DarchetypeGroupId=org.apache.maven.archetypes
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4

命令中指定我們前面所說的 Maven Archetype:maven-archetype-quickstart 信息。

Maven命令怎么使用

運行過程中會提示讓你輸入項目的 Naven 坐標信息,直到創建完成。基礎部分這里不撰述了,需要完整 Maven 教程的關注公眾號Java技術棧在后臺回復"mvn"獲取。

2)通過 IDEs

通過 IDE 也能快速創建 Maven 項目,現在 Java IDEs 都支持 Maven 或者自帶 Maven 插件,下面以 Intellij IDEA 為例進行創建。

選擇 maven-archetype-quickstart:

Maven命令怎么使用

輸入項目的 Naven 坐標信息:

Maven命令怎么使用

選擇 Maven 及倉庫設置信息:

Maven命令怎么使用

等待項目構建完成,如下所示:

Maven命令怎么使用

Maven 項目重構

Maven 項目配置

項目生成后,我們就可以把原系統的文件移到新的 Maven 項目了,因生成的項目結構比較簡單,Maven 提供的 maven-archetype-webapp 模板也不符合要求:

Maven命令怎么使用

我們的項目性質又是后臺系統,涉及到方方面面,所以還需要再完善其他資源目錄的創建:

- 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/webappWeb應用文件目
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>
Maven 依賴轉換

依賴轉換就是要把所有原系統的(*.jar)依賴包全部轉換為 Maven 依賴管理,這里是難點,要解決編譯、啟動、運行時遇到的 jar 包沖突、版本沖突等異常。

我的思路是先把一些核心框架的依賴進行轉換,再進行一些比較獨立的公共工具包的轉換,最后就是一些不熟悉的依賴轉換。

引入 Maven 依賴的時候,看下其所有附屬的所有依賴,再逐漸從 lib 目錄刪除,直到全部刪除完成即轉換完成。

在找對應依賴的時候,如果中央倉庫找不到,其他遠程倉庫能找到的,就在公司私庫中添加該包所在的遠程倉庫代理配置。

如果中央倉庫或者其他遠程倉庫都找不到的,比如第三方的 SDK 包,就上傳到公司私庫。怎么上傳到私庫,點擊這里閱讀,更多 Maven 教程在公眾號Java技術棧回復maven進行閱讀。

根據 JAR 包找 Maven 依賴的時候,可能有多個名稱一樣的依賴,不知道引用哪個,這時候需要去原始 JAR 包中看下包名,根據包名就大概知道坐標信息了。

依賴傳遞:

在依賴轉換過程中,如果一個依賴又依賴了其他依賴,可以直接引用父依賴即可,如在老項目中存在:poi、poi-ooxm、poi-ooxml-schemas 這三個依賴:

Maven命令怎么使用

但在 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 只需要測試時用到,控制好每個包的依賴范圍,做到每個包的作用范圍最小化。

解決沖突:

當傳遞的依賴版本不符合,或者是同一個包出現不同版本導致沖突的時候要學會使用排除:

Maven命令怎么使用

或者強制指定包版本:

<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命令怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐乡市| 石河子市| 宕昌县| 扬中市| 汉源县| 抚顺市| 雅安市| 庆云县| 青浦区| 马山县| 遂川县| 吕梁市| 东兰县| 永兴县| 香港| 依兰县| 湘西| 中江县| 商城县| 安西县| 辽阳市| 巴彦县| 泗水县| 剑河县| 正宁县| 格尔木市| 凤山县| 通榆县| 腾冲县| 太保市| 高雄市| 保亭| 荔波县| 香格里拉县| 钟山县| 会理县| 汤阴县| 海林市| 秦皇岛市| 清水县| 绥江县|