You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Hockchai Lim (JIRA)" <ji...@apache.org> on 2015/07/16 17:03:04 UTC

[jira] [Created] (MWAR-351) Optional dependency to being added to the WEB-INF/lib folder

Hockchai Lim created MWAR-351:
---------------------------------

             Summary: Optional dependency to being added to 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)