[
https://jira.codehaus.org/browse/MWAR-260?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=279167#comment-279167
]
Alex Clarke commented on MWAR-260:
----------------------------------
Hi Joerg,
Indeed it appears that you have a slightly different model in mind. You are
correct in that a war-overlay type is not directly deployable. It can only be
used when applied as an overlay to a war project. The generation actually
creates a jar as the primary artifact (made available on the classpath) and a
zip file containing all web content (obviously excluding web-inf/classes as
these are in the jar).
For us overlays are about being able to create logical modules to help break up
large applications, although we only ever deploy as a whole. It seems your
model is more about creating smaller war files that can be developed and tested
in isolation before being merged into one large deployable. I can see that
there is definitely a case for both scenarios.
Just to clarify my understanding of your scenario, suppose we flesh out the
details of A,B,C :
{code}
A (war)
+- /src/main/java/Class1.java
+- /src/main/webapp/page1
+- /src/main/webapp/page2
+- /src/main/webapp/page3
B (war) [depends on A, exclude /page1]
+- /src/main/java/Class2.java
+- /src/main/webapp/page3
+- /src/main/webapp/page4
C (war) [depends on B]
+- /src/main/java/Class3.java
+- /page5
{code}
You would expect the following:
{code}
a.jar (contains Class1.class)
a-webapp.war (contains page1,page2,page3 and a.jar (in WEB-INF/lib))
b.jar (contains Class2.class)
b-webapp.war (contains page2.page3(from b), page4, a.jar, b.jar)
c.jar (contains Class3.class)
c-webapp.war (contains page2.page3(from b), page4, page5, a.jar, b.jar, c.jar)
{code}
I have tried to create a sample project (attached) to replicate this. It
almost works except I cannot seem to stop artifacts from A appearing in C.
Our scenario is slightly different in that we do not have the same resource in
more than one place:
{code}
A (war-overlay)
+- /src/main/java/Class1.java
+- /src/main/webapp/page1
+- /src/main/webapp/page2
B (war-overlay) [depends on A]
+- /src/main/java/Class2.java
+- /src/main/webapp/page3
+- /src/main/webapp/page4
C (war) [depends on B]
+- /src/main/java/Class3.java
+- /page5
{code}
Creates:
{code}
a.waroverlay (jar contains Class1.class)
a -webcontent.waroverlay (contains page1,page2 (has no WEB-INF/lib))
b.waroverlay (contains Class2.class)
b-webcontent.waroverlay (contains page3, page4 (has no WEB-INF/lib))
c.war:
/page1
/page2
/page3
/page4
/page5
/WEB-INF/classes/Class1.class
/WEB-INF/classes/Class2.class
/WEB-INF/classes/Class3.class
/WEB-INF/lib/ <any dependencies>
{code}
I hope that that helps to clarify the differences between the two approaches
and hopefully makes the patch a more attractive proposition. BTW are you a
committer for maven-war-plugin?
> Patch to provide new war-overlay type
> -------------------------------------
>
> Key: MWAR-260
> URL: https://jira.codehaus.org/browse/MWAR-260
> Project: Maven 2.x WAR Plugin
> Issue Type: Improvement
> Components: overlay
> Affects Versions: 2.1.1
> Reporter: Alex Clarke
>
> There are a number of bugs raised around support for WAR overlays:
> MWAR-73 - war overlay mechanism does not work for classes
> MWAR-253 - Inherit dependencies from a WAR type dependency when it is
> overlayed.
> MWAR-194 - Warn when inconsistent jar versions are detected during overlay
> MWAR-220 - dependencyManagement && overlay + transitive dependency = multiple
> versions of same dependency in WEB-INF/lib
> MWAR-33 - jars with differents versions can be in WEB-INF/lib with war as
> dependencies
> Most of these relate to the fact that overlays are not treated as normal
> maven dependencies.
> The code in https://github.com/SciSysUK/maven-plugins/tree/waroverlay
> introduces a new packaging type of "war-overlay", that works in the following
> way:
> - The primary artifact is a jar containing the classes from the overlay
> - Another artifact is attached containing the web content
> - A dependency on a war-overlay will automatically pull both artifacts
> into the packaged war
> To use the new type all you need to do is declare
> <extensions>true</extensions> on the maven-war-plugin. There is an
> integration test example here:
> https://github.com/SciSysUK/maven-plugins/tree/waroverlay/maven-war-plugin/src/it/war-overlay.
>
> If someone could review the code I could create a patch and update the site
> documentation.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira