[ 
https://issues.apache.org/jira/browse/IVY-431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486440
 ] 

Xavier Hanin commented on IVY-431:
----------------------------------

I've just checked in some changes which now provide module wide excludes as 
suggested in the issue. No settings wide exclude is provided though.

I also took advantage of this modification to refactor the 
artifact/include/exclude elements of dependencies, as was already suggested in 
a former discussion.

Concerning the syntax, I'm not sure the choice is really the best. What I 
dislike is that it isn't exactly the same syntax as the exclude under the 
dependency element. So my idea would be to:
- deprecate the 'name' attribute on the exclude element under dependency, in 
favor of an 'artifact' attribute.
- remove the exclude element under ivy-module introduced in this issue, and put 
exclude rules under 'dependencies' (after 'dependency' elements), with the same 
syntax as under dependency:
{code:xml}
<dependencies>
  <dependency name="acme-tools" rev="latest.integration" />
  <exclude org="acme" module="*test" artifact="test*" type="source" ext="jar" 
matcher="glob" /> 
</dependencies>
{code}

WDYT?

> Global exclude
> --------------
>
>                 Key: IVY-431
>                 URL: https://issues.apache.org/jira/browse/IVY-431
>             Project: Ivy
>          Issue Type: New Feature
>            Reporter: Xavier Hanin
>         Assigned To: Xavier Hanin
>
> For the moment Ivy provides a way to exclude transitive dependencies provided 
> by a dependency in the dependency declaration itself:
> {code:xml}
> <dependency name="A" rev="1.0">
>   <exclude module="B"/>
> </dependency>
> {code}
> But sometimes the same transitive dependency is obtained by several direct 
> dependencies, so you have to exclude it in several dependency declarations.
> So what would be nice is a way to exclude a module more globally:
> - at a module level (declared somewhere in the Ivy file)
> - at a global level (declared somewhere in ivyconf?)
> The problem I see with defining such a global exclude in ivyconf is that it 
> makes the ivy file not self contained. It's already the case with 
> conflict-manager defined globally in ivyconf, so I don't know if it's a big 
> problem or not. May be we should at least warn about that, or inject ivyconf 
> wide settings in the ivy file at deliver time.
> Proposed syntax:
> In Ivy files, add a top level exclude section (like the conflicts section) 
> containing rules of modules/artifacts to exclude:
> {code:xml}
> <exclude>
>   <rule module="*servlet*" matcher="glob" conf="weblib" /> 
>   <rule org="acme" module="*test" artifact="test*" type="source" ext="jar" 
> matcher="glob" /> 
> </exclude>
> {code}
> Note that the conf in the first rule corresponds to conf of the module in 
> which I define the exclusion rule, and restricts the exclusion to this conf 
> only (similar to the conf attribute on the exclude element of dependency).
> In ivyconf, either use the same syntax, or use the modules section to define 
> exclusion the same way conflict manager are defined. The advantage of the 
> latter is that it follows the existing syntax, but I think it's less clear, 
> and doesn't allow to exclude artifacts only. If we follow the same syntax as 
> in ivy files, the conf wouldn't be allowed since it has no meaning.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to