Mavenは、コンパイル、パッケージ化、アーティファクト管理などのプロジェクト・ビルド・タスクの中心となるビルド管理ツールです。MavenはXMLベースの厳密なルール・セットを使用して、柔軟性を保持しながら整合性を促進します。Java中心の継続的インテグレーション・システムのほとんどがMavenと適切に統合されるため、基盤となるビルド・システムとして適切な選択といえます。この章では、Mavenのインストールと構成方法について説明します。
この章の構成は、次のとおりです。
Maven 3.2.5の配布はOracle Fusion Middlewareに含まれています。Oracle WebLogic Serverをインストールした後、Oracleホームの次の場所でMavenを見つけることができます。
ORACLE_HOME/oracle_common/modules/org.apache.maven_3.2.5
これは、Maven 3.2.5標準リリースの変更なしのコピーです。
Maven Webサイトから各自でMavenコピーをダウンロードして、インストールすることもできます。
Oracle Fusion Middlewareは、Maven 3.0.5以降をサポートしています。
インストール後、オペレーティング・システムのPATH環境変数にMavenを次のように追加します。
UNIXの場合:
シェル起動スクリプト、.profile
または.bash_profile
を更新して、パスを更新する必要があります。
たとえば、Oracle WebLogic Serverを/u01/fmwhome
にインストールしてbash
シェルを使用している場合、PATH環境変数に次の内容を追加する必要があります。
export M2_HOME=/u01/fmwhome/oracle_common/modules/org.apache.maven_3.2.5 export PATH=${M2_HOME}/bin:$PATH
JAVA_HOME環境変数がJDKインストールを指すように設定する必要もあります。次に例を示します。
export JAVA_HOME=/u01/jdk1.7.0_45
Windowsの場合:
PATH環境変数を編集し、PATH環境変数の先頭にMavenへの正しいパスを追加します。
たとえば、c:\fmwhome
にWebLogic Serverをインストールしてある場合は、次のように追加する必要があります。
C:\fmwhome\oracle_common\modules\org.apache.maven_3.2.5\bin
JAVA_HOME環境変数がJDKインストールを指すように設定する必要もあります。
次のような場合は、Maven設定ファイルを作成する必要があります。
ファイアウォールまたはプロキシ・サーバーの背後で作業している場合
組織で専用の内部Mavenリポジトリ・マネージャを使用している場合
Oracle Mavenリポジトリにアクセスする場合。
Oracle WebLogic Serverインストールの一環として、またはMaven Webサイトからダウンロードして、初めてMavenのインストールが完了したときには、設定ファイルはまだありません。
Maven設定ファイルsettings.xml
は、通常はホーム・ディレクトリ内の.m2
ディレクトリに保持されます。Mavenが他の場所を指し示すようにする場合は、Mavenマニュアルを参照してください。
UNIXの場合:
ユーザー名がbobの場合、ディレクトリ・パスは次のようになります。
/home/bob/.m2/settings.xml
Windowsの場合:
ユーザー名がbobの場合、ディレクトリ・パスは次のようになります。
C:\Users\bob\.m2\settings.xml
Maven設定ファイルの例を次に示します。
<settings> <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host>proxy.mycompany.com</host> <port>8080</port> <nonProxyHosts>mycompany.com</nonProxyHosts> </proxy> </proxies> <servers> <server> <id>maven.mycompany.com</id> <username>me@mycompany.com</username> <password>{COQLCE6DU6GtcS5P=}</password> </server> </servers> <mirrors> <mirror> <id>archiva</id> <name>Internal Archiva Mirror of Central</name> <url>http://archiva.mycompany.com/repositories/internal</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> </settings>
この例では、使用する可能性がある3つの共通構成の設定を示しています。
Proxy: インターネット上のMavenリポジトリにアクセスするために必要なHTTPプロキシ・サーバーについて、Mavenと通信できます。
Servers: Mavenリポジトリの資格証明についてMavenと通信できるため、リポジトリにアクセスするたびにこれらを入力する必要がなくなります。
Mirrors: Mavenの中央リポジトリに対して直接アクセスを試みるかわりに、内部のMavenリポジトリ・マネージャをMavenの中央リポジトリのミラー(キャッシュ)として使用するようにMavenに通知します。
これらの用語に精通していない場合は、第1章の概要を参照してください。使用可能なMaven設定の詳細は、次の場所にあるMavenマニュアルを参照してください。
たとえば第4章でArchivaを設定したように、Mavenリポジトリ・マネージャの構成が完了した後で、Oracleアーティファクトを移入します。
そのために、Maven同期プラグインが提供されており、このプラグインを使用してOracleホームからローカルまたは共有Mavenリポジトリに移入できます。Fusion Middleware 12c製品をインストールしている場合、同期プラグインで検出できるように、Maven原型、プラグインおよびPOMが製品とともにインストールされます。
この章の内容は次のとおりです。
Oracle Fusion Middleware 12cにはMaven同期プラグインが用意されており、これによってリポジトリの設定プロセスが簡略化され、特定の環境にインストールされるパッチを認識しておく必要性が完全に排除されます。このプラグインを使用すると、指定のOracleホームからMavenリポジトリに移入できます。Oracleホームにパッチを適用した後、このプラグインを実行して、MavenリポジトリがOracleホームと一致するようにします。これにより、その特定の環境のすべてのアーティファクトについて、ビルドで正しいバージョンを使用していることが確実になります。
Oracle Maven同期プラグインは、Oracle WebLogic Server、Oracle CoherenceおよびOracle JDeveloperのインストールに含まれています。プラグインを使用するには、Oracleホームの場所とMavenリポジトリの場所を指定する必要があります。Mavenリポジトリは、ファイル・システムのパスまたはURLのいずれかを使用して指定できます。プラグインはOracleホーム内のすべてのMavenアーティファクトを調べて、すべてのアーティファクトが指定したMavenリポジトリにインストールされていること、およびバージョンが完全に一致していることを確認します。これは、バージョン番号とファイルがバイナリ・レベルで完全に同一であることを意味し、すべてのパッチ適用済ファイルがMavenリポジトリ内に正確に反映されます。
12cのOracleホームにはmaven
ディレクトリがあり、ここには様々なビルド操作を実行するための、Oracle提供アーティファクト用のMavenプロジェクト・オブジェクト・モデル(POM)、プロジェクトを作成するための原型、およびOracle提供のMavenプラグインが含まれています。
Oracle Maven同期プラグインの使用を開始する前に、これをMavenリポジトリにインストールする必要があります。コンピュータ上のローカル・リポジトリにインストールするか、共有内部リポジトリがある場合は、ここにデプロイします。
プラグインはOracle WebLogic Server 12cホームにあり、2つのファイルで構成されています。
プラグインについて記述するMavenプロジェクト・オブジェクト・モデル(POM)ファイル。次の場所にあります。
ORACLE_HOME/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/12.2.1/oracle-maven-sync-12.2.1.pom
プラグインを含むJARファイル。次の場所にあります。
ORACLE_HOME/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/12.2.1/oracle-maven-sync-12.2.1.jar
プラグインをインストールおよびデプロイするには、次の手順を実行します。
ローカルMavenリポジトリにプラグインをインストールするには、ORACLE_HOME/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/12.2.1
ディレクトリから次のコマンドを実行します。
mvn install:install-file -DpomFile=oracle-maven-sync-12.2.1.pom -Dfile=oracle-maven-sync-12.2.1.jar
プラグインをデプロイするには、次の方法のいずれかを使用します。
共有内部リポジトリにプラグインをデプロイする最も簡単な方法として、Mavenリポジトリ・マネージャによって提供されるWebユーザー・インタフェースを使用して、リポジトリにJARファイルをアップロードします。
代替方法としては、デプロイ・プラグインを使用しますが、これは、ORACLE_HOME/oracle_common/plugins/maven/com/oracle/maven/oracle-maven-sync/12.2.1
ディレクトリから次のようなコマンドを使用することで実行できます。
mvn deploy:deploy-file -DpomFile=oracle-maven-sync-12.2.1.pom -Dfile=oracle-maven-sync-12.2.1.jar -Durl=http://servername/archiva/repositories/internal -DrepositoryId=internal
このように、デプロイ・プラグインを使用するには、Mavenのsettings.xmlファイルでリポジトリを定義し、さらに匿名の公開が許可されていない場合には、資格証明を定義する必要があります。
このコマンドの詳細は、次の場所にあるMavenマニュアルを参照してください。
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
使用する際に完全座標を指定しなくて済むようにOracle Maven Synchronizationプラグインに短い名前を使用するには、Mavenのsettings.xmlに次のようにエントリを追加します。
<pluginGroups> <pluginGroup>com.oracle.maven</pluginGroup> ... </pluginGroups>
これにより、oracle-sync
という名前を使用してプラグインを参照できます。
Oracle Maven同期プラグインは、リポジトリに移入するために使用する単一pushゴールをサポートします。
使用方法およびパラメータの説明を取得するには、次のコマンドを実行してhelp:describeゴールを呼び出すことができます。
mvn help:describe -Dplugin=com.oracle.maven:oracle-maven-sync -Ddetail
この出力には、プラグインのpushゴールで使用可能なパラメータが示されています。表5-1に、パラメータを示します。
表5-1 pushゴールのパラメータと説明
パラメータ | 説明 |
---|---|
|
Mavenのsettings.xmlファイルに含まれるサーバー・エントリへのポインタ。これは、リモート・リポジトリにデプロイする場合にのみ必要です。settings.xmlでは、URL、ユーザー名、パスワードなどのリモート・アーティファクト・リポジトリのデプロイメント情報を提供する必要があります。 |
|
Mavenリポジトリへの移入元にするOracleホームへのパス。 |
|
プラグインでリポジトリへのアーティファクトの公開を試行するかどうかを制御するパラメータ。 これをデフォルト値の |
|
このプロパティを このプロパティを |
overwriteParent |
このプロパティを |
pushDuplicates |
このプロパティを |
一部のMavenリポジトリ・マネージャには、リポジトリ内の既存アーティファクトの置換を可能にするかどうかを制御する設定があります。Mavenリポジトリ・マネージャにこのような設定がある場合は、Oracle Maven同期プラグインでリポジトリ内のアーティファクトを更新できるように、正しく設定されていることを確認する必要があります。
Archivaの場合:
「管理」メニューから、「リポジトリ」を選択します。
次に、「Edit」をクリックして、必要なリポジトリの設定を変更します。
Archivaを使用している場合は、「Managed Repository」設定の「Block Re-deployment of Released Artifacts」オプションの選択を解除する必要があります。
その他のMavenリポジトリ・マネージャにも同様の設定があります。別のツールを使用している場合は、そのツールのマニュアルを参照して、この設定の変更方法を確認してください。
リポジトリに移入するには、pushゴールを使用する必要があります。表5-1に示すパラメータをコマンドラインまたはプロジェクト・オブジェクト・モデル・ファイルで指定します。
この章の内容は次のとおりです。
pushゴールを実行すると、次の処理が行われます。
指定されたOracleホームを確認し、そのOracleホームに含まれるすべてのMavenアーティファクトの一覧を作成します。これは、ORACLE_HOME
/oracle_common/plugins/maven
依存性ディレクトリおよびそのサブディレクト内でプロジェクト・オブジェクト・モデル・ファイルを再帰的に検索し、ORACLE_HOME
に存在するPRODUCT_HOME
ごとに
ORACLE_HOME/
PRODUCT_HOME/plugins/maven
ディレクトリおよびそのサブディレクトリ内を再帰的に検索することで実行します。
各プロジェクト・オブジェクト・モデル・ファイルで参照されているJARファイルがOracleホームで使用可能かどうかを確認します。
JARファイルのSHA1チェックサムを計算します。
指定されたリポジトリに対するJARファイル、プロジェクト・オブジェクト・モデル・ファイルおよびSHA1ファイルの公開を試行します。
次のタイプのMavenアーティファクトがリポジトリにインストールされます。
Oracleによって提供されている次のようなMavenの依存性
クライアントAPIクラス
appc
やwlst
などのコンパイル、パッケージ化およびデプロイメント・ユーティリティ
アプリケーションへの組込みが必要なコンポーネントJAR
t3およびJAX-WSクライアント・ランタイムなどのクライアント側のランタイム・クラス
コンパイル、パッケージ化およびデプロイメントを処理するOracle提供のMavenプラグイン
プロジェクト・テンプレートを提供するOracle提供のMaven原型
ローカル・リポジトリに移入する場合は、oracleHome
およびtestingOnly=false
を指定するだけです。
次に例を示します。
mvn com.oracle.maven:oracle-maven-sync:push
-Doracle-maven-sync.oracleHome=/path/to/oracleHome
-DtestingOnly=false
settings.xmlファイルのlocalRepository
要素は、ローカルMavenリポジトリの場所を示します。settings.xmlからlocalRepository
要素を取り除くと、デフォルトの場所は${
HOME
}/.m2/repository
ディレクトリ内になります。
localRepository
値をオーバーライドする場合は、Mavenオプションとしてコマンドラインにオーバーライドの場所を指定する必要があります。
次に例を示します。
mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=/path/to/oracleHome -Dmaven.repo.local=/alter/nate/path
プロジェクト・オブジェクト・モデル・ファイルのパラメータを指定するには、次のようなプラグイン・エントリを追加する必要があります。
<plugin> <groupId>com.oracle.maven</groupId> <artifactId>oracle-maven-sync</artifactId> <version>12.2.1-0-0</version> <configuration> <oracleHome>/path/to/oracleHome</oracleHome> <testOnly>false</testOnly> </configuration> </plugin>
プラグインを追加した後、次のコマンドを実行してMavenを実行します。
mvn com.oracle.maven:oracle-maven-sync:push
リモート・リポジトリに移入する場合は、コマンドライン・インタフェースまたはプラグイン構成でserverId
およびoracleHome
を指定する必要があります。また、プラグインに指定したserverId
と一致するようにsettings.xmlファイルのリポジトリ構成を指定する必要があります。デプロイメントに認証が必要な場合は、Mavenのsettings.xmlファイルにもサーバー・エントリを追加する必要があります。
次に例を示します。
mvn com.oracle.maven:oracle-maven-sync:push -DoracleHome=/path/to/oracleHome -DserverId=internal
これに対応する認証詳細付きのMavenのsettings.xmlファイルは、次のようになります。
... <profiles> <profile> <id>default</id> <repositories> <repository> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <id>internal</id> <name>Team Internal Repository</name> <url>http://some.host/maven/repo/internal</url> <layout>default</layout> </repository> </repositories> </profile> </profiles> ... <server> <id>internal</id> <username>deployer</username> <password>welcome1</password> </server> ... <activeProfiles> <activeProfile>default</activeProfile> </activeProfiles>
プロファイルにターゲット・リポジトリを定義し、前述の例に示すactiveProfilesタグを使用して、そのプロファイルをアクティブ化する必要があります。
注意: serverセクションに、暗号化されたパスワードを指定する必要があります。サーバー・パスワードの暗号化方法については、次を参照してください。
|
プロジェクト・オブジェクト・モデル・ファイルのパラメータを指定するには、次のようなプラグイン・エントリを追加する必要があります。
<plugin>
<groupId>com.oracle.maven</groupId>
<artifactId>oracle-maven-sync</artifactId>
<version>12.2.1-0-0</version>
<configuration>
<serverId>internal</serverId>
<oracleHome>/path/to/oracleHome</oracleHome>
<testOnly>false</testOnly>
</configuration>
</plugin>
プラグインを追加した後、次のコマンドを実行してMavenを実行します。
mvn com.oracle.maven:oracle-maven-sync:push
リポジトリに移入した後、リポジトリ・マネージャ上で索引の更新または原型カタログの更新などのいくつかの操作を実行することもできます。そのような操作が必要または推奨されているかを確認するには、リポジトリ・マネージャのドキュメントを参照してください。
すでにOracleアーティファクトが入っているMavenリポジトリに対してpushゴールを実行すると、Oracle Maven同期プラグインはリポジトリに既存の親POMがあることを検出します。独自の設定を追加するなど変更されている場合があるため、このような親POMは上書きされません。かわりに、警告メッセージが出力されます。親POMを上書きするには、pushゴールに追加パラメータ-DoverriteParents=true
を指定する必要があります。
パッチ適用は、システムを軽微な変更で更新する操作で、通常はソフトウェアが本番環境に移された後に認識された不具合を修正します。Oracle Fusion Middlewareでは、Oracleパッチ(OPatch)を使用して、Oracleホームにインストールされているソフトウェアへのパッチ適用を管理します。Oracleパッチを使用してパッチを適用しても、インストールされているソフトウェアのバージョン番号は変更されません。
Mavenでは、リリース済のソフトウェアが変更されないことを前提としたパッチ適用に対し、様々なアプローチを使用します。パッチが必要な場合、新しいバージョン番号を持つ新しいバージョンのアーティファクトが作成され、パッチとして配布されます。
Mavenを使用してOracle Fusion Middleware環境でアプリケーションを開発する場合には、この違いによって問題が発生します。Oracle Fusion Middleware では、この問題に対応するためのメカニズムを提供しています。
Oracle Fusion Middleware (12.2.1など)を本番環境にリリースした後で問題が見つかった場合、この問題を修正するための個別パッチが作成されます。たとえば、12.2.1と12.2.1などの2つのリリースの間にこのようなパッチが多くリリースされます。これらのパッチをすべて適用する、またはこれらのパッチのいずれも適用しないなど、多数のパッチの組合せを適用できます。
このアプローチでは高い柔軟性が提供されるため、必要なパッチのみを適用し、残りは無視することができます。ただし、Mavenを使用している場合には、問題が発生する可能性があります。ビルド・システムで使用しているアーティファクトのバージョンがターゲット環境で使用されているバージョンと正確に同じである(パッチ適用済の可能性もある)ことを確認してください。
テスト、QA、SIT、本番などの多数の環境が存在する場合には複雑さが増し、それぞれに異なるバージョン(またはパッチ)がインストールされる可能性が高くなります。
このような状況では、ターゲットにする環境ごとに1つのMavenリポジトリを設定することをお薦めします。たとえば、Mavenテスト・リポジトリには、テスト環境にインストールされているバージョンおよびパッチと一致するアーティファクトを格納し、Maven QAリポジトリには、QA環境にインストールされているバージョンおよびパッチと一致するアーティファクトを格納するというように設定します。
Oracle Maven同期プラグインのpushゴールを実行することによって、Mavenリポジトリに新しいMaven原型がインストールされる場合があります。原型の索引を再ビルドするためにコマンドの実行が必要になることがあります。一部のMavenリポジトリ・マネージャではこれを自動的に行います。
ローカル原型カタログを再ビルドするには、次のようなコマンドを実行します。
mvn archetype:crawl -Dcatalog=$HOME/.m2/archetype-catalog.xml
このsettings.xmlファイルの例には、このマニュアルに記載されている継続的インテグレーション・システムの残りの部分とMavenとを統合するためのテンプレートが示されています。第4章および第16章で説明している、中心となるArchivaリポジトリのインタラクションとHudsonの継続的インテグレーション・サーバーの統合をサポートする構成が示されています。各自のシステムの値と一致するように、URL、パスワードなどの値を変更する必要があります。
<settings> <profiles> <profile> <id>default</id> <repositories> <repository> <id>dev-group</id> <name>Dev Group</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/dev-group</url> <layout>default</layout> </repository> <repository> <id>dev</id> <name>Dev</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/dev</url> <layout>default</layout> </repository> <repository> <id>prod-group</id> <name>Prod Group</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/prod-group</url> <layout>default</layout> </repository> <repository> <id>prod</id> <name>Prod</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/prod</url> <layout>default</layout> </repository> <repository> <id>qa-group</id> <name>QA Group</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/qa-group</url> <layout>default</layout> </repository> <repository> <id>qa</id> <name>QA</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/qa</url> <layout>default</layout> </repository> <repository> <id>test-group</id> <name>Test Group</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/test-group</url> <layout>default</layout> </repository> <repository> <id>test</id> <name>Test</name> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/test</url> <layout>default</layout> </repository> <repository> <id>archiva-snapshots</id> <name>Archiva Snapshots</name> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <url>http://SERVER:PORT/archiva/repository/snapshots</url> <layout>default</layout> </repository> </repositories> </profile> </profiles> <servers> <server> <id>dev</id> <username>hudson</username> <password>PASSWORD</password> </server> <server> <id>dev-group</id> <username>hudson</username> <password>PASSWORD</password> </server> <server> <id>archiva-snapshots</id> <username>hudson</username> <password>PASSWORD</password> </server> </servers> <mirrors> <mirror> <id>dev-mirror</id> <name>All else</name> <url>http://SERVER:PORT/archiva/repository/dev-group</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> <activeProfiles> <activeProfile>default</activeProfile> </activeProfiles> </settings>
Mavenのデプロイ・プラグインを使用して、リモート・アーティファクト・リポジトリにアーティファクトおよびプロジェクト・オブジェクト・モデルをデプロイすることもできます。
たとえば、settings.xmlファイルの例にある定義に従ってarchiva-releases
リポジトリにデプロイするには、次のコマンドを実行します。
mvn deploy:deploy-file -Dfile=/path/to/oracle-maven-sync-12.2.1.jar -DrepositoryId=archiva-releases -DpomFile=/path/to/oracle-maven-sync-12.2.1.pom -Durl=http://server:port/archiva/repository/internal