[ 
https://issues.apache.org/jira/browse/MWAR-351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14633694#comment-14633694
 ] 

Hockchai Lim commented on MWAR-351:
-----------------------------------

This WAR module is really a EJB module.  I followed Tomee's suggestion on 
packaging a EJB in WAR file (http://tomee.apache.org/deploying-in-tomee.html).  
 So, this WAR module is really a EJB server app.  All the dependencies declared 
in this module are for this module only.  For all its ejb client modules, I 
would do below to include the ejb client jar:
    <dependency>
        <groupId>MyEJBGroupID</groupId>
        <artifactId>MyEJBArtifactId</artifactId>
        <version>1.0</version>
        <type>ejb-client</type>
    </dependency>

ejb client module does not need server's transitive dependencies, and hence the 
optional attribute are added to them.

The purpose of optional dependency is to allow the author to declare dependency 
for a project/module that is strictly for that project/module only.  The WAR 
plugin not including optional dependency in WEB-INF/lib for that project/module 
seems to be breaking the purpose of this attribute.

 

> Optional dependency not being included in the WEB-INF/lib folder
> ----------------------------------------------------------------
>
>                 Key: MWAR-351
>                 URL: https://issues.apache.org/jira/browse/MWAR-351
>             Project: Maven WAR Plugin
>          Issue Type: Bug
>    Affects Versions: 2.2
>            Reporter: Hockchai Lim
>            Priority: Minor
>
> I've a maven web module that has several dependencies that are declared with 
> <optional>true</optional> in pom.xml.  For example:
>               <dependency>
>                       <groupId>log4j</groupId>
>                       <artifactId>log4j</artifactId>
>                       <optional>true</optional>
>               </dependency>
> When performing packaging of this project, Maven WAR Plugin is not including 
> those optional dependencies to the WEB-INF/lib folder, which I think is 
> incorrect.  According to  
> https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html,
>  optional dependency should work like transitive dependency for this web 
> module.  Optional dependency should only be ignored on projects/modules that 
> reference this web modle.
> Below is the relevant sections from 
> https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
>  link:
> How do optional dependencies work?
> Project-A -> Project-B
> The diagram above says that Project-A depends on Project-B. When A declares B 
> as an optional dependency in its POM, this relationship remains unchanged. 
> Its just like a normal build where Project-B will be added in its classpath.
> Project-X -> Project-A
> But when another project(Project-X) declares Project-A as a dependency in its 
> POM, the optional dependency takes effect. You'll notice that Project-B is 
> not included in the classpath of Project-X; you will need to declare it 
> directly in your POM in order for B to be included in X's classpath.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to