IntelliJ gradle 添加模块依赖

问题描述 投票:0回答:6

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

sandbox
添加模块依赖项。没有骰子。我尝试过添加 jar 引用,但没有骰子。

我相信我需要在 build.gradle 文件中添加依赖项,但不知道如何添加。我已经尝试过

myLib

等。没有骰子。

    

java intellij-idea gradle
6个回答
81
投票

这是大多数 Gradle 项目遵循的模式,其中有一个库,然后是使用该库的示例应用程序 -

ref Gradle 文档

compile files '<path to myLib.jar>'

在顶层
- 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') }

是子项目和变量的所有常见配置的包装器。例如,它最常用于 Maven url 的

build.gradle
部分。有关详细信息,请参阅
Gradle - 多项目构建
远程模块

上面的内容适合在本地工作,但假设您想与许多其他开发人员共享您的存储库,而不会让他们下载额外的源代码。然后您可以将其他库发布到远程服务器。

当您将这些行添加到项目中时,这就是您已经在做的事情

repositories { }

如果您的项目是
在 GitHub 上公开

,请使用jitpack.io 等服务。您还可以在 Bintray OSS 或 Maven Central 上设置一个帐户,以使您的库像大多数其他库一样可用。 如果您的项目是

公司内部的私有

,您将需要一些 Maven 类型的服务器,无论是通用 Web 服务器,还是 Nexus 或 Artifactory,您都可以将其添加到存储库块中。 implementation("org:artifact:version")

然后照常添加 
repositories { maven { url "http://some.maven.site/" } }

compile
    


12
投票
这里

。 简而言之,将此行添加到沙箱 settings.gradle 文件中 - implementation

如果你无法升级 Gradle,那么你唯一的希望就是将 mylib 工件发布到本地 maven 存储库,并将 mavenLocal() 添加到 sandbox/build.gradle。


3
投票

假设这个文件树:

includeBuild '<PATH>/myLib'

您可以这样设置您的 gradle 项目:

    . |- app | |- src | | |- ... | |- build.gradle | |- lib | |- src | | |- ... | |- build.gradle | |- settings.gradle
  • 
    
  • ./settings.gradle
    rootProject.name = 'some-project' include 'app' include 'lib'
  • 
    
  • ./app/build.gradle
最后,确保您要从 
// ... dependencies { // depend on sibling module lib implementation project(':lib') } // ...

模块导入的内容不在基础包中。

    


2
投票

lib



0
投票
darwinbaisa 的答案

原答案

文章中讨论了

https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-android-studio-2-2/

基本上你需要使用复合构建。因此,查看 > 工具窗口 > Gradle > 右键单击使用库的项目 > 复合构建配置 > 勾选您要使用本地版本的库项目。

进行重建,然后应该使用本地依赖项


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

Main
=== 库项目配置更改。 ===

1.将这些更改添加到

Library

文件中。
build.gradle

2.将 JAR 发布到本地 Maven 存储库

plugins { id 'maven-publish' } publishing { publications { mavenJava(MavenPublication) { from components.java } } repositories { maven { name = "localMaven" url = uri("${System.properties['user.home']}/.m2/repository") } } }

=== 主要项目配置更改。 ===

1.将这些更改添加到

./gradlew publish

文件中。
build.gradle

2.将 JAR 发布到本地 Maven 存储库

repositories { mavenLocal() mavenCentral() } dependencies { implementation 'com.supun.app:photo-library:0.0.2-SNAPSHOT' }

	
© www.soinside.com 2019 - 2024. All rights reserved.