Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Road to enterprise level gradle multi project. Gradle Build Recipe

Road to enterprise level gradle multi project. Gradle Build Recipe

Gyeongil Goo
LINE Plus LINE Server dev Team Software Engineer
https://linedevday.linecorp.com/jp/2019/sessions/S1-15

LINE DevDay 2019

November 20, 2019
Tweet

More Decks by LINE DevDay 2019

Other Decks in Technology

Transcript

  1. 2019 DevDay Road to Enterprise Level Gradle Multi Project. Gradle

    Build Recipe > Gyeongil Goo > LINE Plus LINE Server dev Team Software Engineer
  2. > Have deep interest of productivity > Your Friendly Neighborhood

    > Server developer who works with Java/Kotlin About Myself
  3. Multi vs Mono Repo? Protocol Repo Client Repo Server Repo

    Commit Commit Commit Repo Protocol Client Server Commit!
  4. Single vs Multi Application? Juice Repo Coffee Repo Client Protocol

    Server Client Protocol Server Beverage Repo Juice Client Juice Protocol Juice Server Coffee Client Coffee Protocol Coffee Server
  5. Beverage Shop !"" coffee # $"" api # !"" client

    # !"" protocol # $"" server !"" juice # $"" api # !"" client # !"" protocol # $"" server $"" shop $"" server
  6. Beverage Shop !"" coffee # $"" api # !"" client

    - type=java-boot-lib # !"" protocol - type=java-lib # $"" server - type=java-boot-application !"" juice # $"" api # !"" client - type=java-boot-lib # !"" protocol - type=java-lib # $"" server - type=java-boot-application $"" shop $"" server - type=java-boot-application
  7. Type Descriptor > Only one type descriptor per project >

    java-lib, java-boot-lib, java-boot-application, java-boot-servlet-application, java-boot-servlet-war > For hierarchical, vertical characteristics
  8. Label Descriptor > Multiple labels descriptors can be applied for

    one project > spring-boot1, spring-boot2, spring-boot-2dot2, junit4, junit5 > For horizontal characteristics
  9. Beverage Shop !"" coffee # $"" api # !"" client

    - type=java-boot-lib # !"" protocol - type=java-lib # $"" server - type=java-boot-application !"" juice # $"" api # !"" client - type=java-boot-lib # !"" protocol - type=java-lib # $"" server - type=java-boot-application $"" shop $"" server - type=java-boot-application
  10. Beverage Shop !"" yogurt $"" api !"" client - type=java-boot-lib

    !"" protocol - type=java-lib $"" server - type=java-boot-application
  11. Goodness > Can organize similar sub projects > Less coupled

    with library dependency issues, by dependency label > Easy to add new modules or applications > Don’t repeat yourself
  12. Recommend This Plugin to > Wanna reduce the cost to

    read gradle script > Wanna reduce the cost to maintain similar but different based applications > Can expect more similar applications > Start to manage multi-application mono-repo with gradle
  13. Beverage Shop !"" coffee # $"" api # !"" client

    # !"" protocol # $"" server !"" juice # $"" api # !"" client # !"" protocol # $"" server $"" shop $"" server