[ https://issues.apache.org/jira/browse/MWAR-360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15158592#comment-15158592 ]
Michal Domagala commented on MWAR-360: -------------------------------------- I take a look on code and it seems to me that in org.apache.maven.plugin.war.overlay.OverlayManager.getOverlaysAsArtifacts() (https://github.com/apache/maven-plugins/blob/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java#L244) line {{final Set<Artifact> artifacts = project.getArtifacts();}} should be replaced (conditionally) by {{final Set<Artifact> artifacts = project.getDependencyArtifacts();}} I don't see any usecase why transitive dependent WARs should be taken as overlay, because they are already included in direct dependent WARs > 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)