由于種種原因,簡書等第三方平臺博客不再保證能夠同步更新,歡迎移步 GitHub:https://github.com/kingcos/Perspective/。謝謝!
注:
Maven 對于 JAR 的導入提供了巨大便利,
然而有些 JAR 包卻因為各種原因不存在于各大倉庫之中,
本文即是對 Maven 官網的教程翻譯,
希望可以幫到同樣困惑的人。
- PS:
- Maven,名詞,譯作專家,內行。在程序設計開發中,Maven 是一個較為強大但依賴網絡的項目管理工具。
- 本文英語原文引自 Apache Maven 官網中的 Guide to installing 3rd party JARs。
- Last Published: 2016-07-09
- 最新發行時間:2016 年 7 月 9 日
[翻譯]安裝第三方 JAR 向導
盡管很少發生,但有時會有第三方的 JAR,想要放入本地倉庫為自己的構建使用,這是因為這些 JAR 不存在于任何公共倉庫,例如 Maven 中心(倉庫)。JAR 必須被放置在本地倉庫的正確位置,這樣才能被 Apache Maven 獲取到。
為使得這一過程更加簡單,且不易出錯,我們已提供了相對簡單的 Maven-安裝-插件。在本地倉庫安裝 JAR 使用以下命令:
mvn install:install-file -Dfile=<JAR 文件路徑> -DgroupId=<組-id> \
-DartifactId=<工件-id> -Dversion=<版本> -Dpackaging=<包>
如果也含有 pom 文件,你可以使用以下命令:
mvn install:install-file -Dfile=<JAR 文件路徑> -DpomFile=<pom 文件路徑>
使用 Maven-安裝-插件 v2.5 使得安裝 JAR 更加簡單。如果那個 JAR 文件由 Apache Maven 構建,其在 META-INF 的子目錄下還包括一個 pom.xml 文件,它將被默認讀入。在這種情形下,你只需要這么做:
mvn install:install-file -Dfile=<JAR 文件路徑>
[Demo]導入本地 ojdbc6.jar
- Info:
- JDK 1.8
- Intellij IDEA
前言
由于目前使用的數據庫是 Oracle XE,所以在 Java 項目中需要導入其驅動包 ojdbc6.jar。而由于該 JAR 許可證過期,所以無法直接在 Maven 項目中導入。所以做此測試,驗證該向導是否可行,看看其中有木有什么坑。
Run
下載 ojdbc6.jar
按要求做出命令
如果在命令行,可以直接使用以下形式(注意將部分替換為你所要導入 JAR 的信息):
mvn install:install-file -Dfile=/Users/kingcos/Downloads/ojdbc6.jar -DgroupId=com.oracle \
-DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar
如果在 IDEA 配置中,第一行的 \\
需要刪除,即:
mvn install:install-file -Dfile=/Users/kingcos/Downloads/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar
在 IDEA 右側找到 Maven Projects
點擊 Maven Projects 菜單中的命令行按鈕
輸入剛才的命令并運行,查看下方區域是否顯示 BUILD SUCCESS
如果出現失敗,要排查上述各項命令是否正確。
如果成功,即可在 pom.xml 中加入你剛剛導入的 JAR。
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
測試
其實我們找到本地的 maven 倉庫,看看需要的 JAR 在不在就可以了,如下圖,我的 ojdbc6.jar 已經成功導入本地 maven 倉庫。
不過,我也在這里寫了一個小的測試方法,即測試連接數據庫后,將查詢結果打印,運行成功且輸出正確,來測試剛才的配置是否正確。(本機測試成功)
測試類:App.java(由于直接測試,這里沒有更改該類名)
注意:將連接數據庫的代碼即 SQL 語句替換為自己數據庫的設置。
package com.maimeing;
import java.sql.*;
public class App {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement pstm = null;
ResultSet rs = null;
try {
Class.forName("oracle.jdbc.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "demo", "123456");
String sql = "select count(*) from person";
pstm = conn.prepareStatement(sql);
rs = pstm.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
pstm.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}