web-dev-qa-db-ja.com

IntelliJ gradleはモジュールの依存関係を追加します

IntelliJ 2016.2を使用します。
Gradle 2.14.1の使用

2つのプロジェクトがあり、それぞれにbuild.gradleファイルと個別のディレクトリ構造があります。

myLib (meant to be jarred and used by others)
  - build.gradle
  - settings.gradle
  - src/main/Java/...

sandbox (spring boot web app)
  - build.gradle
  - settings.gradle
  - src/main/Java/...
  - src/main/resources/...

うまくいけば、あなたは絵を取得します。 IntelliJ内では、同じレベル(サブプロジェクトなし)に次のモジュール構造があります。

- myLib
- sandbox

簡単なリクエスト... myLibアプリ内でsandboxを使用したい。両方を開発するには、同じプロジェクト内の両方のモジュールが必要です。

IntelliJ内のsandboxmyLibにモジュール依存関係を追加しようとしました。サイコロなし。サイコロではなく、jar参照を追加してみました。

Build.gradleファイルに依存関係を追加する必要があると思いますが、その方法がわかりません。 compile files '<path to myLib.jar>'などを試しました。サイコロはありません。

29
emiles

ローカルモジュール

これは、ライブラリがあるほとんどのGradleプロジェクトが従うパターンであり、そのライブラリを使用するサンプルアプリです。

 - module/
    - build.gradle
    - src/main/Java
 - library/
    - build.gradle
    - src/main/Java
 - settings.gradle
 - build.gradle

そのトップレベルsettings.gradleには

include ':library', ':module'

そして、module/build.gradleで、含まれているプロジェクトをコンパイルします

dependencies {
    compile project(':library')
}

基本的に、最上位のbuild.gradleは、サブプロジェクトと変数のすべての一般的な構成のラッパーです。たとえば、Maven URLのrepositories { }セクションなどで最も一般的に使用されます。完全な詳細は Gradle-Multi-project builds にあります

リモートモジュール

上記はローカルでの作業には適していますが、追加のソースコードをダウンロードさせずに、他の多くの開発者とリポジトリを共有したいとします。次に、他のライブラリをリモートサーバーに公開します。

プロジェクトがGitHubで公開されている場合jitpack.io のようなサービスを使用します。また、Bintray OSSまたはMaven Centralでアカウントをセットアップして、他のほとんどのライブラリと同様にライブラリを使用できるようにすることもできます。

プロジェクトが社内でプライベートである場合、一般的なWebサーバー、Nexus、Artifactoryのいずれであっても、Mavenタイプのサーバーが必要になります。 リポジトリブロックに追加して追加します。

repositories {
    maven { url "http://some.maven.site/" }
}

次に、通常どおりcompileまたはimplementationソースを追加します

50
cricket_007

最後に、Gradle 3.1はこの問題を解決しました。コンポジットビルドがネイティブでサポートされるようになりました。もっと こちら 。要するに、この行をsandbox settings.gradleファイルに追加します。

includeBuild '<PATH>/myLib'

Gradleをアップグレードできない場合、唯一の希望は、mylibアーティファクトをローカルのMavenリポジトリに公開し、mavenLocal()をsandbox/build.gradleに追加することです。

6
darwinbaisa

この答えは現代のgradleとintellijでは時代遅れです。 darwinbaisa's answer を参照してください

元の答え

記事で説明されている https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-Android-studio-2-2 /

基本的に、複合ビルドを使用する必要があります。 [表示]> [ツールウィンドウ]> [Gradle]> [ライブラリを使用してプロジェクトを右クリック]> [コンポジットビルド構成]> [ローカルバージョンを使用するライブラリプロジェクトを選択]。

再構築を実行してから、ローカルの依存関係を使用する必要があります

1
Richard Tingle