Excellent news! :-) thanks, Maarten
----- Original Message ---- From: "Burcher, Greg" <gregory.burc...@netapp.com> To: ivy-user@ant.apache.org Sent: Mon, December 20, 2010 10:33:43 PM Subject: RE: Need StrictConflictManager to respect force 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_co...@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.burc...@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_co...@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.burc...@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 > > > > > > > > > >