You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-user@ant.apache.org by "Burcher, Greg" <Gr...@netapp.com> on 2010/12/17 20:53:24 UTC
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
RE: Need StrictConflictManager to respect force
Posted by "Burcher, Greg" <Gr...@netapp.com>.
Though I still do not fully understand the Ivy internal processing of
dependencies, I was able to get our new StrictWithForceConflictManager
working as desired for our projects. I have opened JIRA incident
IVY-1256 (https://issues.apache.org/jira/browse/IVY-1256) and provided
the code of our conflict manager subclass.
Thanks for all the help.
Greg
> -----Original Message-----
> From: Burcher, Greg
> Sent: Tuesday, December 21, 2010 11:53 AM
> To: ivy-user@ant.apache.org
> Subject: RE: Need StrictConflictManager to respect force
>
> I'm having some trouble because I do not understand the internals of
> how
> Ivy handles the dependency metadata. I copied the algorithm from
> LatestConflictManager for resolution of conflict via the "force"
> attribute:
>
> 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);
> }
> }
>
> I have looked some into the Ivy code, but it is difficult to tell
> exactly how this algorithm relates to the ivy.xml metadata that I need
> to provide, specifically where to place my "force" attribute to force
> resolution to a specific revision of a module.
>
> Looking instead from the outside in, I tried to infer the algorithm by
> watching what Ivy did with various attempts to place the "force"
> attribute in different places. In general, it seems that I need to
> place
> the "force" attribute in the ivy.xml dependencies for the IvyNode
> passed
> as parent to the resolveConflicts() method. BTW, it might be nice to
> include trace of the parent name in the StrictConflictException.
>
> I was thinking I should put the "force" in the root IvyNode, but this
> does not seem to work. Placing the "force" in the IvyNode passed as
> parent seems to work most of the time. The curious part is I'm not
sure
> what is the meaning of "parent" as opposed to "root" and why placing
> the
> "force" at the root would not carry down through all transitive
> dependencies.
>
> In some cases, I have found that even placing the "force" at the
> IvyNode
> passed as parent does not work. In fact, I cannot find any place to
put
> the "force" that resolves the conflict. Is it possible that the
> algorithm to utilize "force" could be changed to make this process
> easier for the user? Could someone offer an explanation of the
> algorithm
> that does not presume intimate understanding of the Ivy code?
>
> Thanks,
>
> Greg
>
> > -----Original Message-----
> > From: Maarten Coene [mailto:maarten_coene@yahoo.com]
> > Sent: Monday, December 20, 2010 6:03 PM
> > To: ivy-user@ant.apache.org
> > Subject: Re: Need StrictConflictManager to respect force
> >
> > Excellent news! :-)
> >
> > thanks,
> > Maarten
> >
> >
> >
> >
> > ----- Original Message ----
> > From: "Burcher, Greg" <Gr...@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_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" <Gr...@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" <Gr...@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
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> >
> >
> >
> >
RE: Need StrictConflictManager to respect force
Posted by "Burcher, Greg" <Gr...@netapp.com>.
I'm having some trouble because I do not understand the internals of how
Ivy handles the dependency metadata. I copied the algorithm from
LatestConflictManager for resolution of conflict via the "force"
attribute:
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);
}
}
I have looked some into the Ivy code, but it is difficult to tell
exactly how this algorithm relates to the ivy.xml metadata that I need
to provide, specifically where to place my "force" attribute to force
resolution to a specific revision of a module.
Looking instead from the outside in, I tried to infer the algorithm by
watching what Ivy did with various attempts to place the "force"
attribute in different places. In general, it seems that I need to place
the "force" attribute in the ivy.xml dependencies for the IvyNode passed
as parent to the resolveConflicts() method. BTW, it might be nice to
include trace of the parent name in the StrictConflictException.
I was thinking I should put the "force" in the root IvyNode, but this
does not seem to work. Placing the "force" in the IvyNode passed as
parent seems to work most of the time. The curious part is I'm not sure
what is the meaning of "parent" as opposed to "root" and why placing the
"force" at the root would not carry down through all transitive
dependencies.
In some cases, I have found that even placing the "force" at the IvyNode
passed as parent does not work. In fact, I cannot find any place to put
the "force" that resolves the conflict. Is it possible that the
algorithm to utilize "force" could be changed to make this process
easier for the user? Could someone offer an explanation of the algorithm
that does not presume intimate understanding of the Ivy code?
Thanks,
Greg
> -----Original Message-----
> From: Maarten Coene [mailto:maarten_coene@yahoo.com]
> Sent: Monday, December 20, 2010 6:03 PM
> To: ivy-user@ant.apache.org
> Subject: Re: Need StrictConflictManager to respect force
>
> Excellent news! :-)
>
> thanks,
> Maarten
>
>
>
>
> ----- Original Message ----
> From: "Burcher, Greg" <Gr...@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_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" <Gr...@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" <Gr...@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
> > >
> > >
> > >
> >
> >
> >
> >
>
>
>
>
Re: Need StrictConflictManager to respect force
Posted by Maarten Coene <ma...@yahoo.com>.
Excellent news! :-)
thanks,
Maarten
----- Original Message ----
From: "Burcher, Greg" <Gr...@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_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" <Gr...@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" <Gr...@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
> >
> >
> >
>
>
>
>
RE: Need StrictConflictManager to respect force
Posted by "Burcher, Greg" <Gr...@netapp.com>.
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" <Gr...@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" <Gr...@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
> >
> >
> >
>
>
>
>
Re: Need StrictConflictManager to respect force
Posted by Maarten Coene <ma...@yahoo.com>.
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" <Gr...@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$AbstractPar
ser.checkErrors(AbstractModuleDescriptorParser.java:89)
at
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractPar
ser.getModuleDescriptor(AbstractModuleDescriptorParser.java:342)
at
org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser.parseDescrip
tor(XmlModuleDescriptorParser.java:103)
at
org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry.parseDescri
ptor(ModuleDescriptorParserRegistry.java:86)
at
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser.parseDescri
ptor(AbstractModuleDescriptorParser.java:48)
at
com.netapp.common.module.ParallelSubAnt.buildModuleItems(ParallelSubAnt.
java:736)
at
com.netapp.common.module.ParallelSubAnt.doExecute(ParallelSubAnt.java:69
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(DelegatingMethodAccessor
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" <Gr...@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
>
>
>
RE: Need StrictConflictManager to respect force
Posted by "Burcher, Greg" <Gr...@netapp.com>.
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$AbstractPar
ser.checkErrors(AbstractModuleDescriptorParser.java:89)
at
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser$AbstractPar
ser.getModuleDescriptor(AbstractModuleDescriptorParser.java:342)
at
org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser.parseDescrip
tor(XmlModuleDescriptorParser.java:103)
at
org.apache.ivy.plugins.parser.ModuleDescriptorParserRegistry.parseDescri
ptor(ModuleDescriptorParserRegistry.java:86)
at
org.apache.ivy.plugins.parser.AbstractModuleDescriptorParser.parseDescri
ptor(AbstractModuleDescriptorParser.java:48)
at
com.netapp.common.module.ParallelSubAnt.buildModuleItems(ParallelSubAnt.
java:736)
at
com.netapp.common.module.ParallelSubAnt.doExecute(ParallelSubAnt.java:69
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(DelegatingMethodAccessor
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" <Gr...@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
>
>
>
Re: Need StrictConflictManager to respect force
Posted by Maarten Coene <ma...@yahoo.com>.
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" <Gr...@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