{"id":1236,"date":"2013-08-02T10:36:05","date_gmt":"2013-08-02T09:36:05","guid":{"rendered":"http:\/\/www.xenonique.co.uk\/blog\/?p=1236"},"modified":"2013-08-02T10:36:05","modified_gmt":"2013-08-02T09:36:05","slug":"java-ee-7-handbook-gradle-multi-modules-puzzle","status":"publish","type":"post","link":"https:\/\/www.xenonique.co.uk\/blog\/2013\/08\/02\/java-ee-7-handbook-gradle-multi-modules-puzzle\/","title":{"rendered":"Java EE 7 Handbook: Gradle Multi-Modules Puzzle"},"content":{"rendered":"<p>Yesterday, I converted Gradle build code base for my upcoming Java EE 7 Developer Handbook book from invidual modules to multi-module. I thought I had this structure down, but I surprisingly I am stuck.<\/p>\n<p>Here is my book\u2019s code structure in folder hierarchy:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\njavaee7handbook\r\njavaee7handbook\/build.gradle\r\njavaee7handbook\/settings.gradle\r\njavaee7handbook\/ch01\r\njavaee7handbook\/ch01\/foo\/build.gradle\r\njavaee7handbook\/ch02\r\njavaee7handbook\/ch02\/bar\/build.gradle\r\njavaee7handbook\/ch03\r\njavaee7handbook\/ch03\/donkey\/build.gradle\r\njavaee7handbook\/ch04\/jpa-simple\r\njavaee7handbook\/ch04\/jpa-simple\/build.gradle\r\n<\/pre>\n<p>This structure runs for 14 chapters including appendices.<br \/>\nSo I have master hierarchy defined in <code>settings.gradle<\/code> and it looks like this:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\ninclude 'ch01\/foo', 'ch02\/bar', 'ch03\/donkey', 'ch04\/jpa-simple', ...\r\n<\/pre>\n<p>With Gradle multi-module build, readers can execute <code>gradle build<\/code> from the root <code>javaee7handbook<\/code> folder and everything will build and run to test to completely. This is great for readers of my book, they can get started very quickly and I am sure they love Gradle.<\/p>\n<p>My problem is that want the novice users to go any sub folder \/ multi-module and execute either <code>gradle idea<\/code> or <code>gradle eclipse<\/code> and just see a single project view.<\/p>\n<p>Whenever I open now a sub module say <code>javaee7handbook\/ch04\/jpa-simple\/build.gradle<\/code> I find that IntelliJ replicates the whole structure inside the sub module!!!<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\njavaee7handbook\/ch04\/jpa-simple\/\r\njavaee7handbook\/ch04\/jpa-simple\/ch01\r\njavaee7handbook\/ch04\/jpa-simple\/ch01\/build.gradle\r\njavaee7handbook\/ch04\/jpa-simple\/ch02\r\njavaee7handbook\/ch04\/jpa-simple\/ch02\/build.gradle\r\njavaee7handbook\/ch04\/jpa-simple\/ch03\r\njavaee7handbook\/ch04\/jpa-simple\/ch03\/build.gradle\r\njavaee7handbook\/ch04\/jpa-simple\/ch04\r\njavaee7handbook\/ch04\/jpa-simple\/ch04\/build.gradle\r\n<\/pre>\n<p>The upper folders replicate into the sub module and IDEA gets totally confused. The JetGradle runs for a long time. This is not acceptable for people new to Java EE 7 and expect a seamless experience and yet Gradle is new way to build software. Android is already there and so is JavaFX 8. So what to do?<\/p>\n<p>In fact, running <code>gradle idea<\/code> generates a <strong><code>javaee7handbook.iml<\/code><\/strong> and not the<strong> <code>jpa-simple.ipr<\/code><\/strong> that I expected file I saw when the Gradle project was not multimodule. I just my readers to see the project <code>jpa-simple<\/code> and not bring in the rest of code related to other chapters. Can you help me figure out quickly how to solve this?<\/p>\n<p>+PP+<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday, I converted Gradle build code base for my upcoming Java EE 7 Developer Handbook book from invidual modules to multi-module. I thought I had this structure down, but I surprisingly I am stuck. Here is my book\u2019s code structure in folder hierarchy: This structure runs for 14 chapters including appendices. So I have master [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[158,150,75,148,110,143,40],"tags":[],"_links":{"self":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1236"}],"collection":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/comments?post=1236"}],"version-history":[{"count":3,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1236\/revisions"}],"predecessor-version":[{"id":1239,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/posts\/1236\/revisions\/1239"}],"wp:attachment":[{"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/media?parent=1236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/categories?post=1236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xenonique.co.uk\/blog\/wp-json\/wp\/v2\/tags?post=1236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}