[ 
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)

Reply via email to