ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Burcher, Greg" <Gregory.Burc...@netapp.com>
Subject RE: Need StrictConflictManager to respect force
Date Mon, 20 Dec 2010 21:33:43 GMT
Thanks Maarten. That was exactly the bit of information that I needed.
All appears to be working now. Once I have the solution fully verified,
I will post to the ivy jira.

Greg

> -----Original Message-----
> From: Maarten Coene [mailto:maarten_coene@yahoo.com]
> Sent: Monday, December 20, 2010 4:18 PM
> To: ivy-user@ant.apache.org
> Subject: Re: Need StrictConflictManager to respect force
> 
> You have to add your custom conflictmanager using the <classpath />
> element in
> your settings.xml.
> 
> Here you can find a little example for adding a custom resolver:
> http://ant.apache.org/ivy/history/latest-
> milestone/settings/classpath.html
> 
> hope this helps you getting started...
> 
> regards,
> Maarten
> 
> 
> 
> ----- Original Message ----
> From: "Burcher, Greg" <Gregory.Burcher@netapp.com>
> To: ivy-user@ant.apache.org
> Sent: Mon, December 20, 2010 7:55:15 PM
> Subject: RE: Need StrictConflictManager to respect force
> 
> We actually need this immediately so I will fully implement/verify and
> then I will also submit to jira. I could do with some help with a
> problem that I am having trouble resolving. I have coded my
> StrictConflictManager subclass and added my code in a jar in the
> ivy.classpath. I have actually added my jar to the org.apache.ivy
> v2.1.0
> module and added my jar as a publication in the ivy.xml for the ivy
> module.
> 
> The Ivy configuration documentation does not have examples, nor could
I
> find any, on the exact syntax to set define a custom conflict manager.
> 
> This is what I have in my ivysettings.xml:
> 
>     <typedef name="strict-with-force"
> classname="com.netapp.common.ivy.StrictWithForceConflictManager"/>
>     <conflict-managers>
>         <strict-with-force/>
>     </conflict-managers>
> 
> Later, in my project ivy.xml file, I have this:
> 
>     <conflict manager="strict-with-force"/>
> 
> Does this all look correct in terms of syntax?
> 
> When I run my build.xml from the linux command line, the xml in the
> ivysettings.xml file seems to parse and be handled fine. However, I
get
> this error when my ivy.xml file is parsed:
> 
> /u/burcher/myproject/build.xml:332: The following error occurred while
> executing this line:
> /u/burcher/myproject/build.xml:150: impossible to parse ivy file for
> /u/burcher/myproject/build.xml: ivyfile=/u/burcher/myproject/ivy.xml
> exception=java.text.ParseException: [unknown conflict manager:
> strict-with-force in file:/u/burcher/myproject/ivy.xml
> ]
>         at
>
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractPa
> r
> ser.checkErrors(AbstractModuleDescriptorParser.java:89)
>         at
>
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractPa
> r
> ser.getModuleDescriptor(AbstractModuleDescriptorParser.java:342)
>         at
>
org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser.parseDescri
> p
> tor(XmlModuleDescriptorParser.java:103)
>         at
>
org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry.parseDescr
> i
> ptor(ModuleDescriptorParserRegistry.java:86)
>         at
>
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser.parseDescr
> i
> ptor(AbstractModuleDescriptorParser.java:48)
>         at
>
com.netapp.common.module.ParallelSubAnt.buildModuleItems(ParallelSubAnt
> .
> java:736)
>         at
>
com.netapp.common.module.ParallelSubAnt.doExecute(ParallelSubAnt.java:6
> 9
> 7)
>         at org.apache.ivy.ant.IvyTask.execute(IvyTask.java:277)
>         at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
>         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
>         at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
> r
> Impl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
>
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:
> 1
> 06)
>         at org.apache.tools.ant.Task.perform(Task.java:348)
>         at
> org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
>         at ...
> 
> Running my build.xml instead in eclipse, I see this error message:
> 
> Error while resolving the ivy instance for ivy.xml in 'myproject':
>   The ivy settings file
> 'file:h:/p4/netapp_ivy_repo/main/ivysettings.xml' could not be parsed:
> failed to load settings from
> file:/h:/p4/netapp_ivy_repo/main/ivysettings.xml: impossible to define
> new type: class not found:
> com.netapp.common.ivy.StrictWithForceConflictManager in [] nor Ivy
> classloader
> Error while resolving the ivy instance for ivy.xml in 'dfm-common':
> 
> Here the error is in the ivysettings.xml file, as though my custom
> class
> cannot be found.
> 
> I will continue to dig into these problems, but any suggestions would
> be
> appreciated.
> 
> Thanks,
> 
> Greg
> 
> > -----Original Message-----
> > From: Maarten Coene [mailto:maarten_coene@yahoo.com]
> > Sent: Monday, December 20, 2010 7:55 AM
> > To: ivy-user@ant.apache.org
> > Subject: Re: Need StrictConflictManager to respect force
> >
> > If possible, could you create a JIRA issue for this and attach a
> patch
> > file to
> > it?
> > https://issues.apache.org/jira/browse/IVY
> >
> > thanks,
> > Maarten
> >
> >
> >
> >
> > ----- Original Message ----
> > From: "Burcher, Greg" <Gregory.Burcher@netapp.com>
> > To: ivy-user@ant.apache.org
> > Sent: Fri, December 17, 2010 8:53:24 PM
> > Subject: Need StrictConflictManager to respect force
> >
> > Neither StrictConflictManager nor LatestCompatibleConflictManager
> > appear
> > to respect the 'force="true" attribute value on dependency. We would
> > like to have the behavior of StrictConflictManager with the
> enhancement
> > that it would recognize the dependency force attribute as an
override
> > to
> > strict conflict resolution. This appears to be fairly easy to code
by
> > extending StrictConflictManager something like this:
> >
> >
> >
> > public class StrictPlusForceConflictManager extends
> > StrictConflictManager {
> >
> >
> >
> >     @Override
> >
> >     public Collection resolveConflicts(IvyNode parent, Collection
> > conflicts) {
> >
> >         /*
> >
> >          * Before using algorithm of StrictConflictManager,
> >
> >          * first check for "force" revision  using code from
> > LatestConflictManager.
> >
> >          */
> >
> >         if (conflicts.size() < 2) {
> >
> >             return conflicts;
> >
> >         }
> >
> >         for (Iterator iter = conflicts.iterator(); iter.hasNext();)
{
> >
> >             IvyNode node = (IvyNode) iter.next();
> >
> >             DependencyDescriptor dd =
> > node.getDependencyDescriptor(parent);
> >
> >             if (dd != null && dd.isForce()
> >
> >                     &&
> > parent.getResolvedId().equals(dd.getParentRevisionId())) {
> >
> >                 return Collections.singleton(node);
> >
> >             }
> >
> >         }
> >
> >         return super.resolveConflicts(parent, conflicts);
> >
> >     }
> >
> > }
> >
> >
> >
> > We have not yet tested because it is a non-trivial task to create
our
> > own ConflictManager subclass, configure to ivy, and deploy the
> compiled
> > class into an appropriate classpath for our build process. For now
we
> > are working around this issue by using a strategy based on the
> > dependency exclude attribute. However, this strategy is not as clean
> > for
> > us as it would be to use the dependency force attribute.
> >
> >
> >
> > Is it possible that combined strict/force conflict management
support
> > could be added to Ivy? Or maybe someone can suggest a strategy to
> > achieve something similar using support already provided?
> >
> >
> >
> > Thanks,
> >
> >
> >
> > Greg Burcher
> >
> >
> >
> 
> 
> 
> 

Mime
View raw message