Skip navigation.

Extending Ivy

Many things are configurable in ivy, and many things are available with ivy core. But when you want to do something not built in ivy core, you can still plug your own code.

Several things are pluggable in ivy:
  • module descriptor parsers
  • dependency resolvers
  • latest strategies
  • conflict managers
  • report outputters
  • version matchers
  • triggers
Before trying to implement your own, we encourage you to check if the solution to your problem cannot be addressed by existing features, or by contributed ones. Do not hesitate to ask for help on the forum.

If you still don't find what you need, there are two solutions:
- prepare yourself to enter in ivy internals
- contact us to ask for specific development or advice. As ivy creators, we will always spend less time to implement your features or help you make good developement environment a reality. So do not hesitate to contact us and ask for a pricing.

And what if you still want to develop your own plugins ? Here are the main things to know...

All ivy plug-ins use the same code patterns as ant specific tasks for parameters. This means that if you want to have a "myattribute" of type String, you just have to declare a method called setMyattribute(String val) on your plug-in. The same applies to child tags, you just have to follow ant specifications.

Knowing that, you then have to implement the appropriate interface:
  • fr.jayasoft.ivy.DependencyResolver for dependency resolvers
  • fr.jayasoft.ivy.LatestStrategy for latest strategies
  • fr.jayasoft.ivy.ConflictManager for conflict managers
  • fr.jayasoft.ivy.parser.ModuleDescriptorParser for module descriptor parsers
To help you understand what is required in each implementation, and what you can use to do it, have a look to existing implementations, it's the best advice we can give you !