日本語情報だと、どこからか取ってきた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に記載したい場合は意味がある・・・・・はず。