Gradle で任意の Maven 設定ファイルのローカルリポジトリ設定を適用する
Gradle のビルドスクリプトにて mavenLocal()
を使用した際、${user.home}/.m2/settings.xml
ファイルに localRepository
設定があれば、これを反映してくれますが、現時点では任意の Maven 設定ファイル (settings.xml) の localRepository を反映する方法は特に用意されていないようです。
- Gradle 1.12
任意のローカルリポジトリを使うには mavenLocal()
を使わず maven { url <リポジトリのパス> }
とすればよいだけですので、下記の方法で任意の Maven 設定ファイルの localRepository を反映できます。
- Maven 設定ファイルをコマンドライン引数 (-P) で指定できるようにする (下記サンプルでは maven.settings としています)
- Maven 設定ファイルから取り出した localRepository の値を
maven { url <ローカルリポジトリのパス> }
で設定する
とりあえず実装してみると下記のようになります。 (Maven 設定ファイルに localRepository 設定の無いケースは考慮していない点に注意)
ビルドスクリプト build.gradle
apply plugin: 'java' repositories { // プロジェクトプロパティ maven.settings の有無で処理を振り分け if (project.hasProperty('maven.settings')) { // Maven 設定ファイルをパース def xml = new XmlSlurper().parse(new File(project['maven.settings'])) maven { url xml.localRepository.text() } } else { mavenLocal() } } dependencies { ・・・ }
-P<プロジェクトプロパティ名>=<値>
オプションで Maven 設定ファイルを指定して実行します。
実行例
> gradle build -Pmaven.settings=settings.xml