IntelliJ gradle add module dependency

后端 未结 4 474
一生所求
一生所求 2020-12-01 03:01

Using IntelliJ 2016.2.
Using Gradle 2.14.1

I have 2 projects, each with their own build.gradle files and separate directory structures:

myLib (me         


        
相关标签:
4条回答
  • 2020-12-01 03:15

    Simplest way is just to keep lib folder at parent dir of project and include below line in your module build.gradle file

    implementation fileTree(dir: '../libs', include: ['*.jar'])
    implementation fileTree(dir: '../libs', include: ['*.aar'])
    
    0 讨论(0)
  • 2020-12-01 03:30

    Local Modules

    This is a pattern followed by most Gradle projects where there is a library, then a sample app that uses that library

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

    In that top-level settings.gradle you have

    include ':library', ':module'
    

    And in the module/build.gradle, you compile that included project

    dependencies {
        compile project(':library')
    }
    

    Basically, the top-level build.gradle, is a wrapper for all common configs of the sub projects and variables. For example, it's most commonly used for a repositories { } section for Maven urls, for example. Full details on that are at Gradle - Multi-project builds

    Remotes Modules

    The above is fine for working locally, but let's say you wanted to share your repo with many other developers without making them download extra source code. Then your would publish the other libraries to a remote server.

    If your projects are public on GitHub, use a service like jitpack.io. You can also setup an account on Bintray OSS or Maven Central to have your libraries be available like most others.

    If your projects are private within your company, you will need some Maven type server, whether that is a generic web server, or Nexus or Artifactory, you can add that with an addition to the repositories block.

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

    Then add the compile or implementation sources, as normal

    0 讨论(0)
  • 2020-12-01 03:35

    Finally Gradle 3.1 has sorted out this issue. Composite builds are now supported natively. More here. In short add this line to sandbox settings.gradle file-

    includeBuild '<PATH>/myLib'
    

    If you can't upgrade Gradle, then the only hope for you is to publish mylib artifact to local maven repo and add mavenLocal() to sandbox/build.gradle.

    0 讨论(0)
  • 2020-12-01 03:40

    This answer is outdated in modern gradle and intellij, please refer to darwinbaisa's answer

    Original answer

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

    Basically you need to use composite builds. So View > Tool windows > Gradle > Right Click on the project using the library > Composite Build Configuration > Tick the library project you want to use the local version of.

    Do a rebuild and then the local dependancy should be used

    0 讨论(0)
提交回复
热议问题