MVNインストールの代替Gradle


163

私はmvnで2つの異なるプロジェクトをビルドしています。Gradleに置き換えようとしています。

プロジェクト1はSDKで、プロジェクト2はSDKを使用しています(例)

mavenの時代には、プロジェクト全体をローカルリポジトリに追加するmvn installを使用してアーティファクトを作成します。

そんなグラドルで働くのが好きです。私はプロジェクト1 build.gradleがGradleローカルリポジトリとして投稿する必要があり、サンプルプロジェクトがそれを使用する必要があるのが好きです。

Mavenでは、プロジェクトアーティファクトを.m2フォルダーに追加するmvn installを実行しますが、gradleでどのように実行すれば、プロジェクトアーティファクトをローカルリポジトリに追加できますか。

私ができる方法はありますか?


回答:


170

sdk/build.gradle

apply plugin: "maven"

group = "foo"
version = "1.0"

example/build.gradle

repositories {
    mavenLocal()
}

dependencies {
    compile "foo:sdk:1.0"
}

$sdk> gradle install

$example> gradle build

1
プラグインの適用: "maven"と$ sdk> gradle installこれは.m2にsdkをインストールしますよね?そしてmavenLocal()も.m2と.gradleから情報を取得しますか?
Rajmahendra、2011年

14
gradle installローカルのMavenリポジトリにパブリッシュし、mavenLocal()依存関係がないか確認します。
Peter Niederwieser、2011年

1
GradleはMavenのように「フェーズ指向」ではないのですか?IOW、私がgradle publish意志を行う場合、それもinstallフェーズを通過しないのですか?
クリスF


8

マルチプロジェクトビルドに関するGradleのドキュメントをご覧ください。

ここに例があり、いくつかの追加の依存関係があります。gradle installルートフォルダーを呼び出すだけで、すべてがビルドされ、ローカルリポジトリに配置されます。

フォルダー構造:

root
+--> build.gradle
+--> settings.gradle
+--> sdk
|    +--> build.gradle
+--> example
     +--> build.gradle

root / build.gradle:

allprojects {
  apply plugin: 'java'
  apply plugin: 'maven'

  group = 'myGroup'
  version = '0.1-SNAPSHOT'
}

root / settings.gradle:

include 'sdk'
include 'example'

root / sdk / build.gradle:

dependencies {
  // just an example external dep.
  compile group:'commons-lang', name:'commons-lang', version:'2.3'
}

root / example / build.gradle:

dependencies {
  compile project(':sdk')
  compile group:'log4j', name:'log4j', version:'1.2.16'
}

4
これは理想的な方法ですか?彼もSDKに依存する新しいプロジェクトexample2を作成したい場合はどうなりますか?依存関係を共有しているという理由だけで、2つの無関係なプロジェクトをルートプロジェクトの下に置く必要があります。この「マルチプロジェクト」セットアップ全体も1 Gitプロジェクトになると思います。繰り返しますが、これは会社/マルチ開発者のワークフローにとって悪いことですか?
Anthony Chuinard

2

独自のライブラリをローカルリポジトリに公開する必要があります。これは次の方法で行うことができます。

  1. maven-publishプラグインを追加:

    plugins {
        // your other plugins come here...
        id 'maven-publish'
    }
  2. ビルドファイルにpublishingセクションを追加します。

    publishing {
        publications {
            myCoolLibrary(MavenPublication) {
                from components.java
            }
        }
    }
  3. 走る gradle build publishToMavenLocal

    詳細については、ドキュメントをご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.