簡體   English   中英

IntelliJ gradle 添加模塊依賴

[英]IntelliJ gradle add module dependency

使用 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

簡單的請求......我想在sandbox應用程序中使用myLib 我希望在同一個項目中同時開發這兩個模塊。

我嘗試在 IntelliJ 中為myLibsandbox添加模塊依賴項。 沒有骰子。 我試過添加一個罐子參考,沒有骰子。

我相信我需要在 build.gradle 文件中添加一個依賴項,但無法弄清楚如何。 我試過compile files '<path to myLib.jar>'等。沒有骰子。

本地模塊

這是大多數 Gradle 項目所遵循的模式,其中有一個庫,然后是一個使用該庫的示例應用程序 - 參考 Gradle 文檔

 - app/
    - build.gradle
    - src/main/java  # where your main class would be 
 - library/
    - build.gradle
    - src/main/java  # dependencies of the app module 
 - settings.gradle
 - build.gradle

在那個頂級settings.gradle你有

include ':library', ':app'

app/build.gradle中,編譯包含的項目

dependencies {
    compile project(':library')
}

基本上,頂級build.gradle是子項目和變量的所有常見配置的包裝器。 例如,它最常用於 Maven url 的repositories { }部分。 Gradle - 多項目構建

遙控器模塊

以上對於本地工作來說很好,但是假設您想與許多其他開發人員共享您的存儲庫,而不讓他們下載額外的源代碼。 然后您會將其他庫發布到遠程服務器。

當您將這些行添加到項目中時,這就是您已經在做的事情

implementation("org:artifact:version")

如果您的項目在 GitHub 上是公開的,請使用類似jitpack.io的服務。 您還可以在 Bintray OSS 或 Maven Central 上設置一個帳戶,以使您的庫像大多數其他庫一樣可用。

如果您的項目在您的公司內是私有的,您將需要一些 Maven 類型的服務器,無論是通用 Web 服務器,還是 Nexus 或 Artifactory,您都可以將其添加到存儲庫塊中。

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

然后像往常一樣添加compileimplementation

Gradle 3.1 終於解決了這個問題。 現在原生支持復合構建。 更多在這里 簡而言之,將此行添加到沙箱 settings.gradle 文件中-

includeBuild '<PATH>/myLib'

如果您無法升級 Gradle,那么您唯一的希望就是將 mylib 工件發布到本地 maven repo 並將 mavenLocal() 添加到 sandbox/build.gradle。

最簡單的方法是將 lib 文件夾保留在項目的父目錄中,並在模塊 build.gradle 文件中包含以下行

implementation fileTree(dir: '../libs', include: ['*.jar'])
implementation fileTree(dir: '../libs', include: ['*.aar'])

我知道這很舊,但我最近遇到了同樣的問題,這是我的解決方案:

假設這個文件樹:

.
|- app
|  |- src
|  |  |- ...
|  |- build.gradle
|
|- lib
|  |- src
|  |  |- ...
|  |- build.gradle
|
|- settings.gradle

您可以這樣設置您的 gradle 項目:

  • ./settings.gradle
rootProject.name = 'some-project'
include 'app'
include 'lib'
  • ./app/build.gradle
// ...
dependencies {
    // depend on sibling module lib
    implementation project(':lib')
}
// ...

最后,確保您要從lib模塊導入的內容不在基礎包中。

這個答案在現代 gradle 和 intellij 中已經過時了,請參考darwinbaisa 的答案

原始答案

它在文章https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-android-studio-2-2/中討論

基本上你需要使用復合構建。 所以查看 > 工具窗口 > Gradle > 右鍵單擊​​使用庫的項目 > 復合構建配置 > 勾選您要使用本地版本的庫項目。

進行重建,然后應該使用本地依賴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM