Oracle DBのjdbcドライバをmavenから利用する。
日本語情報だと、どこからか取ってきたjdbcドライバを自前でローカルリポジトリにインストールしろという記事しか見つからなかったので。
Oracle社はOracle DB用のjdbcドライバを自前のmavenリポジトリでリリースしており、そちらから取得する設定を行うことで、ローカルリポジトリに個別にインストールしなくても使用することが出来ます。
基本的には以下の記事のとおりです。
記事自体は2016年に公開されたものですが、細かいバージョン等はアップデートされているようで、現時点では以下のバージョンが利用できるとの事。
- 18.3.0.0
- 12.2.0.1
- 12.1.0.2
- 12.1.0.1
- 11.2.0.4
まずは、Oracleのアカウントを作成して以下にアクセスし、利用規約に同意する必要があります。
https://www.oracle.com/webapps/maven/register/license.html
%USER_HOME%/.m2/setting.xmlに以下の記述を追加してください。 serverのusernameとpasswordはOracleにアカウントを登録した自分のものを使用する必要があります。
<settings> <!-- Oracleのサーバーのプロファイルでの有効化 --> <profiles> <profile> <id>oracle</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>maven.oracle.com</id> <name>oracle-maven-repo</name> <url>https://maven.oracle.com</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> </repository> </repositories> </profile> </profiles> <!-- Oracleのサーバーの追加 --> <servers> <server> <id>maven.oracle.com</id> <username>OracleアカウントのID</username> <password>Oracleアカウントのパスワード</password><!-- 暗号化したい場合は後述 --> <configuration> <basicAuthScope> <host>ANY</host> <port>ANY</port> <realm>OAM 11g</realm> </basicAuthScope> <httpConfiguration> <all> <params> <property> <name>http.protocol.allow-circular-redirects</name> <value>%b,true</value> </property> </params> </all> </httpConfiguration> </configuration> </server> </servers> </settings>
この状態で、pom.xmlのdependencyに以下のように記載すればOKです。atrifactIdやversionについてはサポート情報を参照しつつ適切なものを指定してください。
<dependency> <groupId>com.oracle.jdbc</groupId> <artifactId>ojdbc8</artifactId> <version>18.3.0.0</version> </dependency>
パスワードの暗号化
パスワードを暗号化したい場合は、setting.xmlの隣にsettings-security.xmlを置く必要があります。 以下のコマンドでmaven用のマスターパスワードを暗号化します。
mvn -encrypt-master-password "マスターパスワード"
(例)
$ mvn -encrypt-master-password password {9w4lYAShAwsHjAeOPalqAanbuKtz+vReNStoIHpd0wc=}
setting-security.xmlの内容としては以下のように記述します。
<settingsSecurity> <master>上記のコマンドの出力結果</master> </settingsSecurity>
以下のコマンドを打つことでOracleアカウントのパスワードを暗号化することが出来ます。
mvn -encrypt-password Oracleアカウントのパスワード
(例)
$ mvn -encrypt-password password {cmpjcpQb1KsH1O6ljNnoidSMmsYshOwW4kF90QFXzd0=}
この出力内容をpasswordのタグの中に記載することでパスワードが暗号化された状態で使用できます。 マスターパスワードが隣に保存されているかぎりあまり意味はないですが、pom.xmlに記載したい場合は意味がある・・・・・はず。