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 [[links contributed ones]]. Do not hesitate to ask for help on the [[mailing-lists]].
If you still don't find what you need, then you'll have to develop your own plugin or find someone who could do that for you.
Here are the main things to know if you want to develop your own plugins...
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:
org.apache.ivy.DependencyResolver for dependency resolvers
org.apache.ivy.LatestStrategy for latest strategies
org.apache.ivy.ConflictManager for conflict managers
org.apache.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!