Search code examples
apachedependenciesivy

Can I use properties in an ivy.xml file to avoid repeating version numbers of dependencies?


Here's what part of my ivy.xml looks like right now:

<dependency org="org.springframework" name="org.springframework.core" rev="3.0.2.RELEASE" />
<dependency org="org.springframework" name="org.springframework.context" rev="3.0.2.RELEASE" />
<dependency org="org.springframework" name="org.springframework.jdbc" rev="3.0.2.RELEASE" />
<dependency org="org.springframework" name="org.springframework.beans" rev="3.0.2.RELEASE" />
<dependency org="org.springframework" name="org.springframework.jms" rev="3.0.2.RELEASE" />

Here's what I'd like it to look like:

<dependency org="org.springframework" name="org.springframework.core" rev="${spring.version}" />
<dependency org="org.springframework" name="org.springframework.context" rev="${spring.version}" />
<dependency org="org.springframework" name="org.springframework.jdbc" rev="${spring.version}" />
<dependency org="org.springframework" name="org.springframework.beans" rev="${spring.version}" />
<dependency org="org.springframework" name="org.springframework.jms" rev="${spring.version}" />

Is this possible? What's the syntax?


Solution

  • I ended up using XML entities to do the substitution. This keeps everything in the same file, which is important for my use case.

    <?xml version="1.0"?>
    <!DOCTYPE ivy-module [
        <!ENTITY spring.version "3.0.2.RELEASE">
    ]>
    <ivy-module version="2.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://incubator.apache.org/ivy/schemas/ivy.xsd">
    
        <info organisation="org" module="mod"/>
    
        <dependencies>
            <dependency org="org.springframework" name="org.springframework.core" rev="&spring.version;" />
            <dependency org="org.springframework" name="org.springframework.context" rev="&spring.version;" />
            <dependency org="org.springframework" name="org.springframework.jdbc" rev="&spring.version;" />
            <dependency org="org.springframework" name="org.springframework.beans" rev="&spring.version;" />
            <dependency org="org.springframework" name="org.springframework.jms" rev="&spring.version;" />
        </dependencies>
    </ivy-module>