Home > Enterprise >  How to create a build.gradle file that allows me to debug into my dependency
How to create a build.gradle file that allows me to debug into my dependency

Time:01-07

I've got a kotlin module that takes in a core dependency. I also own that dependency. I'm unique in that I own this dependency, and everyone else in my company just uses this dependency. I'd like to make a build.gradle file that will allow me to open the user module in intellij, but allow me to debug all the way down into the dependency I own. Nobody else needs to do this, so I can't just change things so they affect everybody. But I still feel there's a way I can stick both projects into one folder and have an extra build.gradle file in that parent folder that will only work for me.

Let me try and outline how I would like things to look Module that everyone uses = MOD_A Module that is a dependency but only I use it = MOD_B

    Parent folder:
    |> private build.gradle.kts file that only I use
    |> MOD_A:
        |> build.gradle
    |> MOD_B:
        |> build.gradle

How do I achieve this?

Stretch goal: how would I create gradle tasks in MOD_B that automatically become available in MOD_A?

I did try and create my own build.gradle.kts file in the parent folder, and pointed intellij at that. This did not work :(

    plugins {
        id("application")
    }

    dependencies {
        implementation("MOD_A")
        implementation("MOD_B")
    }

CodePudding user response:

I don't use IntelliJ, but this is how I would do it in general. (It works for NetBeans.)

On your system edit the settings.gradle file to add the "owned" module as an included build. You could also use a property to have this done dynamically, so the settings file can be the same for everyone, but your user gradle.properties file will define a property to enable this. See https://docs.gradle.org/current/userguide/composite_builds.html

This will automatically cause the dependency to come from your own local build and you should be able to step into the code.

e.g. settings.gradle

if (System.getProperty('USE_LOCAL_MOD_A') != null) {
  includeBuild '../MOD_A'
}

then in ~/.gradle/gradle.properties you can add

systemProp.USE_LOCAL_MOD_A=true
  • Related