You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Vsevolod Golovanov (JIRA)" <ji...@apache.org> on 2017/02/21 06:26:44 UTC
[jira] [Commented] (MWAR-351) Optional dependency not being
included in the WEB-INF/lib folder
[ https://issues.apache.org/jira/browse/MWAR-351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15875433#comment-15875433 ]
Vsevolod Golovanov commented on MWAR-351:
-----------------------------------------
In contrast, we're using {{optional}} in WAR as a way to build different WARs for different customers.
{code}
<dependency>
<groupId>my.company</groupId>
<artifactId>ui-module-a</artifactId>
<optional>${ui-module-a-excluded}</optional>
</dependency>
<dependency>
<groupId>my.company</groupId>
<artifactId>ui-module-b</artifactId>
<optional>${ui-module-b-excluded}</optional>
</dependency>
...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<classifier>${customer-classifier}</classifier>
</configuration>
</plugin>
{code}
The parent pom has profiles defining customers and their modules.
I'm unaware of a another way to achieve this given this set of properties.
> 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.15#6346)