目錄
一、使用坐標導入 jar 包
?二、使用坐標導入 jar 包 – 快捷方式
?三、使用坐標導入 jar 包 – 自動導入
?四、依賴范圍
一、使用坐標導入 jar 包
1、在 pom.xml 中編寫 <dependencies> 標簽
2、在 <dependencies> 標簽中 使用 <dependency> 引入坐標
3、定義坐標的 groupId,artifactId,version
4、點擊刷新按鈕,使坐標生效
?二、使用坐標導入 jar 包 – 快捷方式
1、在 pom.xml 中 按 alt + insert,選擇 Dependency
2、在彈出的面板中搜索對應坐標,然后雙擊選中對應坐標
3、點擊刷新按鈕,使坐標生效
?三、使用坐標導入 jar 包 – 自動導入
1、選擇 IDEA中 File --> Settings
2、在彈出的面板中找到 Build Tools
3、選擇 Any changes,點擊 ok 即可生效
?四、依賴范圍
三種不同的類路徑
Maven在執(zhí)行過程中有三種不同的classpath,它們運行Java代碼的時候,使用不同的classpath類路徑下的jar包來執(zhí)行。三種classpath范圍如下:
classpath范圍 | 理解為 |
---|---|
編譯類路徑 | jar包是給main目錄下的java代碼使用 |
測試類路徑 | jar包是給test目錄下的java代碼使用 |
運行時類路徑 | jar包是在程序運行的時候才起作用,理解為target中才起使用 |
?常用依賴范圍
什么是依賴范圍:使用上面三種類路徑中的一種或多種
通過設置坐標的依賴范圍(scope),可以設置 對應jar包的作用范圍:編譯環(huán)境、測試環(huán)境、運行環(huán)境。<scope>默認值:compile
依賴范圍 |
編譯classpath |
測試classpath |
運行classpath |
例子 |
compile |
Y |
Y |
Y |
logback |
test |
- |
Y |
- |
Junit |
provided |
Y |
Y |
- |
servlet-api |
runtime |
- |
Y |
Y |
jdbc驅動 |
system |
Y |
Y |
- |
存儲在本地的jar包 |
import |
引入DependencyManagement |
示例:test依賴范圍
1. 在02_Web項目中,main目錄下創(chuàng)建一個類的,寫一個測試類,加上@Test注解,發(fā)現報錯。
?
2. 因為在pom.xml的dependency中配置了scope為test,表示只在test目錄下可以使用,如果改成compile或provided并且刷新Maven Projects,則可以使用。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!--依賴范圍,配置test,只有test目錄下可以,使用-->
<scope>test</scope>
</dependency>
示例:provided依賴范圍
例如:servlet-api就是編譯和測試的時候才有用,在運行時不用,因為Tomcat容器已經提供了。如果打包到war文件中,可能會導致與Tomcat容器中的Servlet有沖突。
?1. 現在我們刪除Servlet中的scope,這時它的依賴范圍變成默認compile,即在編譯,測試,運行時(打包到war中)都可以使用。
<!--Servlet的配置-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
2. 通過Maven啟動Tomcat7的方式運行,發(fā)現出現如下錯誤,這是因為我們的Servlet被打包到了war包中,與Tomcat容器中的Servlet API發(fā)生了沖突導致
?3. 這時如果使用生成周期package打包,會發(fā)現在lib下有多余的jar包
?4. 將servlet的scope改成provided。停止Tomcat7,執(zhí)行生命周期的clean命令,再次運行package,可以看到新產生的lib下沒有servlet的jar包
?5. 再次啟動tomcat7,執(zhí)行正常
示例:runtime依賴范圍
JDBC訪問MySQL數據庫,在寫代碼的過程中是針對接口開發(fā),不會牽涉到任何JDBC的實現類。如:得到連接對象Connection不是通過我們在代碼中寫new JDBC4Connection子類來得到的,而是程序在執(zhí)行過程中才讀取MySQL的驅動類生成它的子類對象,只在測試和運行期間才會用到MySQL的子類,所以設置為runtime范圍。
1.在pom.xml中配置mysql驅動的依賴,指定依賴范圍為runtime,只在測試和運行時期間起作用。
<!-- mysql的驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22</version>
<!--指定依賴范圍-->
<scope>runtime</scope>
</dependency>
2. 在test中,創(chuàng)建一個JDBC的測試方法,得到連接對象,可以發(fā)現JDBC的實現類在編譯階段是用不到的。因為編譯階段沒有用到任何與JDBC4Connection相關的類,只在測試階段和運行時才會用到。
@Test
public void testConnection() throws SQLException {
Connection connection = DriverManager.getConnection("jdbc:mysql:///test", "root", "root");
System.out.println(connection);
}
3.得到MySQL的連接對象文章來源:http://www.zghlxwxcb.cn/news/detail-576047.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-576047.html
到了這里,關于【Maven】依賴管理—導入jar包的三種方式、依賴范圍設置的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!