[ https://issues.apache.org/jira/browse/MWAR-360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michal Domagala updated MWAR-360: --------------------------------- Description: Example: I have WAR project 'Base' with class A. I have WAR project 'Level1' which is depends on 'Base'. 'Level1' has class B extends A. Then 'Base' must have <attachClasses>true</attachClasses> Finally, I have WAR project 'Level2' with class C extends B. For the same reason 'Level1' must have <attachClasses>true</attachClasses> Expected: when Level2 WAR is build, only Level1 WAR is overlayed, because Level1 contains Base Actual: Level1 and Base are overlayed together. That wastes time. {noformat} [INFO] Copying webapp resources [mwar/Level2/src/main/webapp] [INFO] Processing overlay [ id mwar:Level1] [INFO] Processing overlay [ id Base:Base] [INFO] Webapp assembled in [26 msecs] {noformat} Reason: Level1 classes JAR has dependency to Base WAR, but that dependency is "fake" {noformat} [INFO] mwar:Level2:war:0.0.1-SNAPSHOT [INFO] +- mwar:Level1:war:0.0.1-SNAPSHOT:compile [INFO] \- mwar:Level1:jar:classes:0.0.1-SNAPSHOT:compile [INFO] +- Base:Base:war:0.0.1-SNAPSHOT:compile [INFO] \- Base:Base:jar:classes:0.0.1-SNAPSHOT:compile {noformat} Proposed solution: There should be option 'notOverlayTransitiveWar' which allow exclude WARs like 'Base' from overlaying, because the transitive WAR may be reached only over JAR and I think there is no reason any JAR really depends on WAR. Workaround is manually define ovelays in plugin configuration, but Maven spirit is Convention over Configuration h2. example # git clone https://github.com/michaldo/mwar360.git # cd mwar360 # mvn package was: Example: I have WAR project 'Base' with class A. I have WAR project 'Level1' which is depends on 'Base'. 'Level1' has class B extends A. Then 'Base' must have <attachClasses>true</attachClasses> Finally, I have WAR project 'Level2' with class C extends B. For the same reason 'Level1' must have <attachClasses>true</attachClasses> Expected: when Level2 WAR is build, only Level1 WAR is overlayed, because Level1 contains Base Actual: Level1 and Base are overlayed together. That wastes time. {noformat} [INFO] Copying webapp resources [mwar/Level2/src/main/webapp] [INFO] Processing overlay [ id mwar:Level1] [INFO] Processing overlay [ id Base:Base] [INFO] Webapp assembled in [26 msecs] {noformat} Reason: Level1 classes JAR has dependency to Base WAR, but that dependency is "fake" {noformat} [INFO] mwar:Level2:war:0.0.1-SNAPSHOT [INFO] +- mwar:Level1:war:0.0.1-SNAPSHOT:compile [INFO] \- mwar:Level1:jar:classes:0.0.1-SNAPSHOT:compile [INFO] +- Base:Base:war:0.0.1-SNAPSHOT:compile [INFO] \- Base:Base:jar:classes:0.0.1-SNAPSHOT:compile {noformat} Proposed solution: There should be option 'notOverlayTransitiveWar' which allow exclude WARs like 'Base' from overlaying, because the transitive WAR may be reached only over JAR and I think there is no reason any JAR really depends on WAR. Workaround is manually define ovelays in plugin configuration, but Maven spirit is Convention over Configuration > Overlay: ignore WAR which is transitively dependent over JAR > ------------------------------------------------------------ > > Key: MWAR-360 > URL: https://issues.apache.org/jira/browse/MWAR-360 > Project: Maven WAR Plugin > Issue Type: Improvement > Reporter: Michal Domagala > Priority: Minor > > Example: > I have WAR project 'Base' with class A. > I have WAR project 'Level1' which is depends on 'Base'. 'Level1' has class B > extends A. > Then 'Base' must have <attachClasses>true</attachClasses> > Finally, I have WAR project 'Level2' with class C extends B. For the same > reason 'Level1' must have <attachClasses>true</attachClasses> > Expected: when Level2 WAR is build, only Level1 WAR is overlayed, because > Level1 contains Base > Actual: Level1 and Base are overlayed together. That wastes time. > {noformat} > [INFO] Copying webapp resources [mwar/Level2/src/main/webapp] > [INFO] Processing overlay [ id mwar:Level1] > [INFO] Processing overlay [ id Base:Base] > [INFO] Webapp assembled in [26 msecs] > {noformat} > Reason: Level1 classes JAR has dependency to Base WAR, but that dependency is > "fake" > {noformat} > [INFO] mwar:Level2:war:0.0.1-SNAPSHOT > [INFO] +- mwar:Level1:war:0.0.1-SNAPSHOT:compile > [INFO] \- mwar:Level1:jar:classes:0.0.1-SNAPSHOT:compile > [INFO] +- Base:Base:war:0.0.1-SNAPSHOT:compile > [INFO] \- Base:Base:jar:classes:0.0.1-SNAPSHOT:compile > {noformat} > Proposed solution: There should be option 'notOverlayTransitiveWar' which > allow exclude WARs like 'Base' from overlaying, because the transitive WAR > may be reached only over JAR and I think there is no reason any JAR really > depends on WAR. > Workaround is manually define ovelays in plugin configuration, but Maven > spirit is Convention over Configuration > h2. example > # git clone https://github.com/michaldo/mwar360.git > # cd mwar360 > # mvn package -- This message was sent by Atlassian JIRA (v6.3.4#6332)