日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven中的dependencyManagement

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven中的dependencyManagement 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

maven 是用來構建項目結構的,是一種主流的項目構建工具,項目中使用到的第三方jar包,用maven來管理是非常方便的,本篇文章主要來講解<dependencyManagement> 和 <dependencies> 在管理jar包方面的不同之處,對于maven的基礎信息和其他的一些方面不再做介紹。

現在的項目基本上都是使用多module來管理的,這就涉及到一個問題,多module之間如何使用共同的第三方jar,或者說如何減少相同的jar導入的配置。

1. 首先介紹<dependencies>

???我們是這里引入了一個jar包之后,這里如果沒有加上version版本號的話,那么maven就會去<dependencyManagement>里找對應groupId和artifactId的jar,如果有就繼承他,如果沒有就會報錯,這時候其實在我們配置的本地倉庫中會真實的下載對應的jar包,這時候所有的子module都會默認繼承這里面所有聲明的jar

2.?<dependencyManagement>

????這里其實是起到管理依賴jar版本號的作用,一般只會在項目的最頂層的pom.xml中使用到,所有子module如果想要使用到這里面聲明的jar,只需要在子module中添加相應的groupId和artifactId即可,并不需要聲明版本號,需要注意的是這里面只是聲明一個依賴,并不是真實的下載jar,只有在子module中使用到,才會去下載依賴。
?

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><druid.version>1.0.1</druid.version><mysql.version>5.1.26</mysql.version><spring.version>4.3.12.RELEASE</spring.version><mybatis.version>3.4.5</mybatis.version><mybatis-spring.version>1.3.0</mybatis-spring.version><pagehelper.version>4.1.6</pagehelper.version><gson.version>2.2.4</gson.version><guava.version>15.0</guava.version><dubbo.version>2.5.3</dubbo.version><zookeeper.version>3.4.8</zookeeper.version><zkclient.version>0.8</zkclient.version><commons-lang.version>2.6</commons-lang.version><shiro.version>1.2.3</shiro.version><freemarker.version>2.3.22</freemarker.version><commons-beanutils.version>1.9.2</commons-beanutils.version><junit.version>4.12</junit.version><mockito.version>1.10.19</mockito.version><commons-collections4.version>4.1</commons-collections4.version><httpclient.version>4.5.5</httpclient.version><fastjson.version>1.2.37</fastjson.version><jedis.version>2.9.0</jedis.version><redis.version>1.8.8.RELEASE</redis.version><jdk.version>1.8</jdk.version><commons-logging.version>1.1</commons-logging.version><log4j.version>1.2.17</log4j.version><javax.servlet.version>2.5</javax.servlet.version><activemq-core.version>5.7.0</activemq-core.version><activemq-pool.version>5.12.1</activemq-pool.version><spring.jms.version>5.0.6.RELEASE</spring.jms.version><aspectj.version>1.8.0</aspectj.version><jms.version>2.0.1</jms.version><cglig.version>3.2.4</cglig.version><!-- 設置默認編碼 --><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><center.project.name>${project.artifactId}</center.project.name><profiles.dir>src/profiles</profiles.dir> </properties> <dependencyManagement><dependencies><!-- Aspectj --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${aspectj.version}</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>${cglig.version}</version></dependency><!-- activemq --><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-core</artifactId><version>${activemq-core.version}</version></dependency><dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-pool</artifactId><version>${activemq-pool.version}</version></dependency><dependency><groupId>javax.jms</groupId><artifactId>javax.jms-api</artifactId><version>${jms.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId><version>${spring.jms.version}</version></dependency><!-- activemq --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${javax.servlet.version}</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>${commons-logging.version}</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- spring --><!-- db --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- db --><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>${mybatis-spring.version}</version></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>${pagehelper.version}</version></dependency><!-- mybatis --><!-- apache --><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>${commons-lang.version}</version></dependency><!-- apache --><!-- commons-beanutils --><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>${commons-beanutils.version}</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><!-- commons-beanutils --><!-- dubbo --><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>${dubbo.version}</version><exclusions><exclusion><artifactId>spring</artifactId><groupId>org.springframework</groupId></exclusion><exclusion><artifactId>netty</artifactId><groupId>org.jboss.netty</groupId></exclusion></exclusions></dependency><!-- dubbo --><!-- zookeeper --><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>${zookeeper.version}</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>${zkclient.version}</version></dependency><!-- zookeeper --><!-- jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>${jedis.version}</version></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>${redis.version}</version></dependency><!-- test start --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>test</scope></dependency><dependency><groupId>org.mockito</groupId><artifactId>mockito-core</artifactId><version>${mockito.version}</version><scope>test</scope></dependency><!-- test end --><!-- google --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>${gson.version}</version></dependency><!-- fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency><!-- google --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>${commons-collections4.version}</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency></dependencies> </dependencyManagement> <dependencies><!-- Aspectj --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>${aspectj.version}</version></dependency> </dependencies>

關于去除某個dependency中某個依賴項

可以使用如下的方式

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>${httpclient.version}</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions> </dependency>

Dependency Scope認識

在POM 4中,<dependency>中還引入了<scope>,它主要管理依賴的部署。目前<scope>可以使用5個值:?

* compile,缺省值,適用于所有階段,會隨著項目一起發布。?
* provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。?
* runtime,只在運行時使用,如JDBC驅動,適用運行和測試階段。?
* test,只在測試時使用,用于編譯和運行測試代碼。不會隨項目發布。?
* system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。

依賴范圍控制哪些依賴在哪些classpath?中可用,哪些依賴包含在一個應用中。讓我們詳細看一下每一種范圍:

compile?(編譯范圍)

compile是默認的范圍;如果沒有提供一個范圍,那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath?中可用,同時它們也會被打包。

provided?(已提供范圍)

provided?依賴只有在當JDK?或者一個容器已提供該依賴之后才使用。例如,?如果你開發了一個web?應用,你可能在編譯?classpath?中需要可用的Servlet API?來編譯一個servlet,但是你不會想要在打包好的WAR?中包含這個Servlet API;這個Servlet API JAR?由你的應用服務器或者servlet?容器提供。已提供范圍的依賴在編譯classpath?(不是運行時)可用。它們不是傳遞性的,也不會被打包。

runtime?(運行時范圍)

runtime?依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC
驅動實現。

test?(測試范圍)

test范圍依賴?在一般的編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用。

system?(系統范圍)

system范圍依賴與provided?類似,但是你必須顯式的提供一個對于本地系統中JAR?文件的路徑。這么做是為了允許基于本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven?也不會在倉庫中去尋找它。如果你將一個依賴范圍設置成系統范圍,你必須同時提供一個?systemPath?元素。注意該范圍是不推薦使用的(你應該一直盡量去從公共或定制的?Maven?倉庫中引用依賴)

?

maven中使用scope= import

在Spring boot 項目的POM文件中,我們可以通過在POM文件中繼承 Spring-boot-starter-parent來引用Srping boot默認依賴的jar包,如下:

<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.BUILD-SNAPSHOT</version> </parent>

但是,通過上面的parent繼承的方法,只能繼承一個 spring-boot-start-parent。實際開發中,用戶很可能需要繼承自己公司的標準parent配置,這個時候可以使用 scope=import 來實現多繼承。

<dependencyManagement><dependencies><dependency><!-- Import dependency management from Spring Boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.0.1.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

通過上面方式,就可以獲取spring-boot-dependencies.2.0.1.BUILD-SNAPSHOT.pom文件中dependencyManagement配置的jar包依賴。

如果要繼承多個,可以在dependencyManagement中添加,如:

<dependencyManagement><dependencies><!-- Override Spring Data release train provided by Spring Boot --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-releasetrain</artifactId><version>Fowler-SR2</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.0.1.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement>

?

總結

以上是生活随笔為你收集整理的Maven中的dependencyManagement的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。