Apache Ivy multiproject dependency declaration - ant

I have 2 projects, but Apache Ivy is not able to detect dependency from one to other (I am doing something wrong, but I am not able to see what it is)
2 projects are in separate top level dirs as below
chainedresolvers-project
dep-project
project1 ivy
<ivy-module version="1.0">
<info organisation="myreports" module="chained-resolvers" status="integration"/>
<publications>
<artifact name="myapp" type="jar" conf="default" />
</publications>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.0" conf="default"/>
<dependency name="test" rev="1.0"/>
<dependency name="rwrun" rev="latest"/>
</dependencies> </ivy-module>
project2 ivy (dep on project1)
<ivy-module version="1.0">
<info organisation="myreports" module="dep-project" status="integration"/>
<dependencies>
<dependency name="chained-resolvers" rev="latest.integration" conf="default"/>
</dependencies>
</ivy-module>
when i run ant on the 2nd project
::::::::::::::::::::::::::::::::::::::::::::::
:: UNRESOLVED DEPENDENCIES ::
::::::::::::::::::::::::::::::::::::::::::::::
:: myreports#chained-resolvers;latest.integration: not found
::::::::::::::::::::::::::::::::::::::::::::::
pls comment what i could be doing wrong that it is not able to pickup the dependency ?

Due to
<publications>
<artifact name="myapp" type="jar" conf="default" />
</publications>
the name of your artifact is myapp
therefore the dependency has to be:
<ivy-module version="1.0">
<info organisation="myreports" module="dep-project" status="integration"/>
<dependencies>
<dependency organisation="myreports" name="myapp" rev="latest.integration" conf="default"/>
</dependencies>
</ivy-module>

Related

Downloading LWJGL natives with Ivy

I'm trying to set up an Ant + Ivy build for a personal project. Everything was making sense, and working nicely, until I got to LWJGL. Everything from LWJGL is resolved, except the natives.
The Readme.md on their website makes it seem that it is possible to get these through Ivy:
LWJGL 3 can be used with Maven/Gradle/Ivy, with the following
dependencies:
org.lwjgl:lwjgl:${version}
org.lwjgl:lwjgl-platform:${version}:natives-windows
org.lwjgl:lwjgl-platform:${version}:natives-linux
org.lwjgl:lwjgl-platform:${version}:natives-osx
The files I want are definitely on the maven central repository, so there must be a way of getting them through Ivy. I have set up my ivy.xml file like so:
<ivy-module version="1.0" xmlns:extra="http://ant.apache.org/ivy/extra">
<info organisation="foo" module="bar"/>
<publications>
<artifact name="baz" type="jar"/>
</publications>
<dependencies>
<dependency org="org.lwjgl" name="lwjgl" rev="3.0.0a"/>
<dependency org="org.lwjgl" name="lwjgl-platform" rev="3.0.0a" extra:classifier="natives-linux"/>
<dependency org="org.lwjgl" name="lwjgl-platform" rev="3.0.0a" extra:classifier="natives-osx"/>
<dependency org="org.lwjgl" name="lwjgl-platform" rev="3.0.0a" extra:classifier="natives-windows"/>
</dependencies>
</ivy-module>
And my resolve task in ant:
<target name="resolve" description="Retrive dependencies with Ivy">
<ivy:retrieve/>
</target>
For some reason, this downloads all the artifacts from "org.lwjgl:lwjgl:3.0.0a" (jar, javadoc, and sources), but does not download any of the natives from "org.lwjgl:lwjgl-platform:3.0.0a". I spent a long time on Google, and finally managed to find the "extra:classifier" syntax in someone else's ivy.xml file on Github, but to no avail (I got my hopes up too early). There must be something I'm missing, so I hope someone on SO can help.
Extra artifacts in Maven modules must be explicitly retrieved in the ivy dependency declaration.
You'll also need to specify the pattern used in the retrieve task, because "classifier" is a Maven specific tag and optional.
Example
├── build.xml
├── ivy.xml
└── target
└── lib
├── lwjgl-3.0.0a.jar
├── lwjgl-platform-3.0.0a-natives-linux.jar
├── lwjgl-platform-3.0.0a-natives-osx.jar
└── lwjgl-platform-3.0.0a-natives-windows.jar
build.xml
<project name="demo" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="build.dir" location="target"/>
<target name="resolve">
<ivy:retrieve pattern="${build.dir}/lib/[artifact]-[revision](-[classifier]).[ext]"/>
</target>
</project>
ivy.xml
<ivy-module version="1.0" xmlns:extra="http://ant.apache.org/ivy/extra">
<info organisation="foo" module="bar"/>
<dependencies>
<dependency org="org.lwjgl" name="lwjgl" rev="3.0.0a" conf="default"/>
<dependency org="org.lwjgl" name="lwjgl-platform" rev="3.0.0a">
<artifact name="lwjgl-platform" type="jar" extra:classifier="natives-linux"/>
<artifact name="lwjgl-platform" type="jar" extra:classifier="natives-osx"/>
<artifact name="lwjgl-platform" type="jar" extra:classifier="natives-windows"/>
</dependency>
</dependencies>
</ivy-module>

Ivy: Fetching Javadocs and Sources

I'm fairly new to Ivy, but have gotten it to work with jar dependencies. The problem is trying to set it up, so I can fetch javadocs and sources independently of jars.
I have a simple test project, but no matter what I'm doing, I'm fetching the jar with the class files in it.
I have the following ivy.xml file:
<ivy-module version="1.0">
<info
organisation="com.vegicorp"
module="test"
revision="1.0"
status="release"/>
<configurations>
<conf name="default" visibility="public" extends="runtime,master"/>
<conf name="master" visibility="public"/>
<conf name="compile" visibility="public"/>
<conf name="provided" visibility="public"/>
<conf name="runtime" visibility="public" extends="compile"/>
<conf name="test" visibility="private" extends="runtime"/>
<conf name="system" visibility="public"/>
<conf name="sources" visibility="public"/>
<conf name="javadoc" visibility="public"/>
<conf name="optional" visibility="public"/>
</configurations>
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="compile->default"/>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="sources->default">
<artifact name="commons-logging" type="sources" ext="jar"/>
</dependency>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="javadoc->default">
<artifact name="commons-logging" type="javadoc" ext="jar"/>
</dependency>
</dependencies>
</ivy-module>
And the following build.xml:
<project name="ivy-test" default="default" basedir="."
xmlns:ivy="http://ant.apache.org/ivy">
<property name="ivy.dir" value="${basedir}/ivy.dir"/>
<import file="${ivy.dir}/ivy.tasks.xml"/>
<property name="target.dir" value="${basedir}/lib"/>
<target name="-resolve">
<ivy:resolve/>
</target>
<target name="clean">
<delete dir="${target.dir}"/>
<ivy:cleancache/>
</target>
<target name="default"
depends="-resolve">
<fail message="ivy.conf is not defined">
<condition>
<not>
<isset property="ivy.conf"/>
</not>
</condition>
</fail>
<delete dir="${target.dir}"/>
<mkdir dir="${target.dir}"/>
<ivy:retrieve conf="${ivy.conf}"
pattern="${target.dir}/[artifact]-[revision].[ext]"/>
</target>
</project>
At the command line, I'll type:
$ ant -Divy.conf=compile
And, that should download the jarfile with the classes.
However if I type it this:
$ ant -Divy.conf=sources
I want the jar file that contains the sources and not the classes, and when I type this:
$ ant -Divy.conf=javadoc
I want the jar file that contains the javadoc and not the sources.
I'm pretty sure it's my ivy.xml that's not quite right. I originally tried this:
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1">
<artifact name="commons-logging" type="jar" ext="jar" conf="compile->default"/>
<artifact name="commons-logging" type="sources" ext="jar" conf="sources->default"/>
<artifact name="commons-logging" type="javadoc" ext="jar" conf="javadoc->default"/>
</dependency>
That downloaded the jar, the sources, and javadoc, but all at once no matter which configuration I tried.
Okay, I think I've figured it out. I was over thinking this whole process. My <dependencies> section should look like this:
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="javadoc->javadoc;sources->sources;compile->default"/>
</dependencies>
This maps my javadoc to Maven's javadoc and my sources to Maven's sources. When I mapped conf="sources->default", it was mapping my sources to Maven's default which is the compile dependencies.
I can specify all the configurations in one line, and I don't need separate <artifact> entities.

Using status in IVY, works for the "less stable one" (ie integration), not for the other (ie milestone and release)

I am trying desperately to have this working. I've spent the whole day on it and can't find what's wrong.
It seems that IVY can resolve only the "less stable status" in the statuses list, ie for the default ones, only integration not milestone or release.
This is a test ant file.
<project name="helicopter" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<ivy:settings file="ivysettings.xml" id="ivy.instance"/>
<!-- the call to resolve is not mandatory, retrieve makes an implicit call if we don't -->
<ivy:resolve file="ivy.xml" />
<ivy:retrieve type="swc" pattern="../libs/bin/[module]-[revision].[ext]" />
<ivy:retrieve type="src" pattern="../libs/src/[module]-[revision].[ext]" />
</project>
This is the ivysettings.xml
<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
<settings defaultResolver="local" />
<resolvers>
<filesystem
name="local"
checkmodified="true">
<artifact pattern="C:/repository/[organisation]/[module]/[revision]/[artifact].[ext]" />
</filesystem>
</resolvers>
</ivysettings>
And this is the ivy.xml
<ivy-module
version="2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
>
<info
organisation="com.org"
module="moduleA"
status="integration"
/>
<publications>
<artifact type="swf" ext="swf" />
<artifact type="src" ext="src.zip" />
</publications>
<dependencies>
<dependency org="com.org" name="moduleB" rev="latest.integration">
<artifact name="moduleB" type="swc" ext="swc" />
<artifact name="moduleB" type="src" ext="src.zip" />
</dependency>
</dependencies>
</ivy-module>
And the moduleB ivy.xml in the repository (folder)
<info organisation="com.org" module="moduleB" revision="0.0.5.0" status="integration" publication="20111201174403"/>
<publications>
<artifact type="swc" ext="swc"/>
<artifact type="src" ext="src.zip"/>
</publications>
<dependencies>
</dependencies>
So this will work, the moduleB will be downloaded all right.
Now if I edit the ivy.xml to get the latest.milestone
<info
organisation="com.org"
module="moduleA"
status="integration"
/>
<publications>
<artifact type="swf" ext="swf" />
<artifact type="src" ext="src.zip" />
</publications>
<dependencies>
<dependency org="com.org" name="moduleB" rev="latest.milestone">
<artifact name="moduleB" type="swc" ext="swc" />
<artifact name="moduleB" type="src" ext="src.zip" />
</dependency>
</dependencies>
</ivy-module>
and edit the ivy.xml of my published moduleB (so editing in the repository folder) to be of status milestone
<info organisation="com.org" module="moduleB" revision="0.0.5.0" status="milestone" publication="20111201174403"/>
<publications>
<artifact type="swc" ext="swc"/>
<artifact type="src" ext="src.zip"/>
</publications>
<dependencies>
</dependencies>
it won't work, the artifact won't be found, although listed
:: problems summary ::
:::: WARNINGS
module not found: com.org#moduleB;latest.milestone
==== local: tried
-- artifact com.org#moduleB;latest.milestone!moduleB.src.zip(src):
C:/repository/com.org/moduleB/revision]/moduleB.src.zip
[0.0.5.0 (MD)]
-- artifact com.org#moduleB;latest.milestone!moduleB.swc:
C:/repository/com.org/moduleB/[revision]/moduleB.swc
[0.0.5.0 (MD)]
Now the FUN PART!
Before using the defaults statuses from IVY I used mine.
It had the exact same behavior (that's why I tried the defaults one then).
The fun bits is that if I had
<statuses default="status-dev">
<status name="status-stable" integration="false"/>
<status name="status-test" integration="false"/>
<status name="status-dev" integration="true" />
</statuses>
The only latest.[status] working will be for status-dev.
Now if I change the status order to
<statuses default="status-dev">
<status name="status-stable" integration="false"/>
<status name="status-dev" integration="true" />
<status name="status-test" integration="false"/>
</statuses>
The only one working will be status-test.
I' puzzled here... :/
Thanks for any help you could provide.
Cheers,
Xavier
I have created a basic project showing the weird behavior.
moduleB is the module being published.
moduleA is the module getting moduleB as a dependency.
Please update the path to the local repository in both ivysettings file
The link to download the file
https://rapidshare.com/files/1326835940/test_ivy.zip
Wow, that looks like a very strange overloading of the dependency construct. I would stick with a simpler ivy.xml, with a single dependency upon moduleB. Just change the rev attribute at runtime using a property file. That is, coalesce all of your dependencies into:
<dependency org="com.org" name="moduleB" rev="${dependency.rev.moduleB}"
conf="build-release->default;build-milestone->default;build-devs->default">
<artifact name="shared" type="swc" ext="swc" />
<artifact name="shared" type="src" ext="src.zip" />
</dependency>
You can even supply a default value to the property (for IvyDE, for example) in your ivy-settings.xml:
<property name="dependency.rev.moduleB"
value="latest.integration"
override="false"/>
Also, you'll want to edit your ivysettings.xml to include a pattern for the repository to find ivy.xml files:
<resolvers>
<filesystem
name="local"
checkmodified="true">
<artifact pattern="C:/repository/[organisation]/[module]/[revision]/[artifact].[ext]" />
<ivy pattern="C:/repository/[organisation]/[module]/[revision]/ivy.xml" />
</filesystem>
</resolvers>

Apache ivy. JbossAS, dependencies and some basic questions on ivy

I'm totally new in ivy, so don't blame for for rather elementary questions.
I'm working on project that depends on some libraries of jbossAS 4.0.3.
To tell exactly - there are jboss-4.0.3-scheduler, jboss-4.0.3-jboss-system, jboss-4.0.3-jboss, jboss-4.0.3-jbossall-client. So i have a logical question - how can I point ivy to find them on public repository? Or that's the wrong direction of leveraging ivy in this situation?
And another simple question - for example, in the past this project depended on castor-0.9.7, axis-1.3 and log4j - after ivy dependency resolution - I had a lot of other jars like activation-1.1.jar, axis-saaj-1.3.jar, mail-1.4.jar and so on. So it was only 3 jars in dependencies in the past - now I have 10. Do i really need them?
And what is the way to know for sure what do i need of this additional jars?? (after all the project was working with old config - 3 jars).
And what if I have some artifact(dependee project). Other project depends on it, but i don't want transitive dependencies to be resolved. That's only a question of interest ))
This is how i am pulling dependencies now (from local repo), and what i want - to pull them from public repo (if it is possible) :
<ivy-module version="2.2">
<info organisation="org.btl" module="BtlAppServer" revision="1.7"/>
<configurations defaultconfmapping="default">
<conf name="compile" visibility="private"/>
<conf name="test" extends="compile" visibility="private"/>
<conf name="master" />
<conf name="runtime" extends="compile" />
<conf name="default" extends="master,runtime"/>
</configurations>
<publications>
<artifact conf="master"/>
</publications>
<dependencies>
<dependencies>
<dependency org="jboss" name="jboss" rev="4.0.3" conf="*->default" />
<dependency org="jboss" name="jbossall-client" rev="4.0.3"
conf="*->default"/>
<dependency org="jboss" name="jboss-system" rev="4.0.3" conf="*->default"/>
<dependency org="jboss" name="scheduler-plugin" rev="4.0.3"
conf="*->default"/>
<dependency org="org.btl" name="BtlCommon" rev="latest.integration" />
</dependencies>
</ivy-module>
setttings file for this stuff :
<ivysettings>
<settings defaultResolver="myChain"/>
<include url="${ivy.default.settings.dir}/ivysettings-public.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
<include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
<resolvers>
<chain name="myChain" returnFirst="true">
<resolver ref="local"/>
<!-- JBoss -->
<ibiblio name="jboss-nexus" m2compatible="true"
root="https://repository.jboss.org/nexus/content/groups/developer/"
pattern="[organisation]/[module]/[revision]/[artifact]-[revision](-
[classifier]).[ext]"/>
<ibiblio name="ibiblio" m2compatible="true" />
</chain>
</resolvers>
<modules>
<module organisation='org.btl' resolver='local' />
</modules>
</ivysettings>
File ivy.xml for the second question :
<ivy-module version="2.2">
<info organisation="org.btl" module="BtlCommon" revision="1.7"/>
<configurations defaultconfmapping="default">
<conf name="compile" visibility="private"/>
<conf name="test" extends="compile" visibility="private"/>
<conf name="master" />
<conf name="runtime" extends="compile" />
<conf name="default" extends="master,runtime"/>
</configurations>
<publications>
<!--get the artifact from our module name-->
<artifact conf="master"/>
</publications>
<dependencies>
<dependency org="axis" name="axis" rev="1.3" conf="*->default" />
<dependency org="castor" name="castor" rev="0.9.7" conf="*->default" />
<dependency org="log4j" name="log4j" rev="1.2.15" conf="*->default" >
<exclude org="com.sun.jdmk"/>
<exclude org="com.sun.jmx"/>
<exclude org="javax.jms"/>
</dependency>
</dependencies>
</ivy-module>
Don't know if that can help someway )
The extra jars are produced by transitive dependencies. These may not be needed to compile your project but needed at runtime.
If they are actually needed depends on the dependency itself and your usage of the library. Mail.jar(Java Mail API) for example is only needed if you need to send Mails.
I think it will be quite complicated to really make sure, that you won't need the extra libraries (in the future?). If you are sure now, that you program runs without them, you can just set the transitive attribute to the dependency. And they will not be downloaded.
<dependency org="axis" name="axis" rev="1.3" conf="*->default" transitive="false"/>
I found the Jboss dependencies in the java.net repository for revision="4.2.2.GA". Seems the best option. But I couldn't find the scheduler.
ivysettings.xml
<ibiblio name="jboss-java.net" m2compatible="true"
root="http://download.java.net/maven/2/"/>

Resolving XSD's using Ivy

Forgive the double post but I am keen on an answer to this.
I would like some advice as to the approach I am taking. I am using Ivy for dependency management and am able to download and use all my jar files no issues. I would like to also run the <schemavalidate> task in Ant and would like to use Ivy to download the xsd's and dtd's as specified, thereby eliminating the need for a network connection after the initial download and also reducing my build time. I think I have a solution but wanted to run it
by some extra eyes for a sanity check and suggestions for possible improvements. Below is the relevant parts of my build scripts. The first call to retrieve uses my default ivysettings.xml and second call uses a settings file specific for retrieving xsd's and dtd's. Any feedback would be appreciated.
build.xml:
<project etc>
...
<target name="resolve" description="Retrieve dependencies with ivy">
<ivy:retrieve refresh="true"
sync="true"
conf="compile,war,runtime,test,findbugs"
pattern="${ivy.lib.dir}/[conf]/[artifact]-[revision].[ext]"/>
<ivy:settings id="xsd.settings"
file="${search.server.home}/ivysettings-xsd.xml"/>
<ivy:retrieve settingsref="xsd.settings"
refresh="false"
sync="false"
conf="xmlentities"
pattern="${ivy.lib.dir}/[conf]/[artifact].[ext]"/>
</target>
...
</project>
ivy.xml:
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<dependencies>
<!-- Jar files defined here but removed for brevity -->
...
<dependency org="beans" name="spring-beans" rev="3.0" conf="xmlentities->default">
<artifact name="spring-beans" type="xsd"/>
</dependency>
<dependency org="context" name="spring-context" rev="3.0" conf="xmlentities->default">
<artifact name="spring-context" type="xsd"/>
</dependency>
<dependency org="mvc" name="spring-mvc" rev="3.0" conf="xmlentities->default">
<artifact name="spring-mvc" type="xsd"/>
</dependency>
<dependency org="tool" name="spring-tool" rev="3.0" conf="xmlentities->default">
<artifact name="spring-tool" type="xsd"/>
</dependency>
<dependency org="util" name="spring-util" rev="3.0" conf="xmlentities->default">
<artifact name="spring-util" type="xsd"/>
</dependency>
<dependency org="javaee" name="javaee" rev="5" conf="xmlentities->default">
<artifact name="javaee_5" type="xsd"/>
<artifact name="web-app_2_5" type="xsd"/>
<artifact name="javaee_web_services_client_1_2" type="xsd"/>
<artifact name="jsp_2_1" type="xsd"/>
</dependency>
<dependency org="xmlschema" name="xmlschema" rev="2001" conf="xmlentities->default">
<artifact name="XMLSchema" type="xsd"/>
<artifact name="xml" type="xsd"/>
</dependency>
</dependencies>
</ivy-module>
ivysettings-xsd.xml:
<?xml version="1.0" encoding="UTF-8"?>
<ivysettings>
<settings defaultResolver="namespaces"/>
<resolvers>
<chain name="namespaces" returnFirst="true">
<url name="w3-org-ns" checksums="">
<artifact pattern="http://www.w3.org/2001/[artifact].[ext]"/>
</url>
<url name="javaee-ns" checksums="">
<artifact pattern="http://java.sun.com/xml/ns/javaee/[artifact].[ext]"/>
</url>
<url name="spring-ns" checksums="">
<artifact pattern="http://www.springframework.org/schema/[organisation]/[artifact].[ext]"/>
</url>
</chain>
</resolvers>
</ivysettings>
Ben
Interesting problem. Caching the Schema files enables off-line validation.
As Tom stated I think only a single retrieve is needed. (My example fetches both jars and schema files)
<ivy:retrieve pattern="${lib.dir}/[conf]/[artifact]-[revision].[ext]"/>
I've offered some changes to the ivy and settings files.
ivy.xml
I've used ivy extra attributes to assist with the generation of the Spring Schema URLs:
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="com.myspotontheweb.demo" module="spring"/>
<configurations defaultconfmapping="compile->default">
<conf name="compile" description="Compile dependencies"/>
<conf name="schemas" description="XML schema files"/>
</configurations>
<dependencies>
<!-- Compile depedencies -->
<dependency org="org.springframework" name="spring-core" rev="3.0.6.RELEASE"/>
<!-- Schema dependencies -->
<dependency org="org.springframework" name="schemas" rev="3.0" conf="schemas->default">
<artifact name="spring-beans" e:framework="beans" type="xsd"/>
<artifact name="spring-context" e:framework="context" type="xsd"/>
<artifact name="spring-mvc" e:framework="mvc" type="xsd"/>
<artifact name="spring-tool" e:framework="tool" type="xsd"/>
<artifact name="spring-util" e:framework="util" type="xsd"/>
</dependency>
<dependency org="com.sun.java" name="schemas" rev="5" conf="schemas->default">
<artifact name="javaee_5" type="xsd"/>
<artifact name="web-app_2_5" type="xsd"/>
<artifact name="javaee_web_services_client_1_2" type="xsd"/>
<artifact name="jsp_2_1" type="xsd"/>
</dependency>
<dependency org="org.w3" name="schemas" rev="2001" conf="schemas->default">
<artifact name="XMLSchema" type="xsd"/>
<artifact name="xml" type="xsd"/>
</dependency>
</dependencies>
</ivy-module>
ivysettings.xml
Configure ivy to use Maven repositories by default. Use a modules declaration to route the special schema modules to your URL resolvers.
<ivysettings>
<settings defaultResolver="maven-repos"/>
<resolvers>
<chain name="maven-repos">
<ibiblio name="central" m2compatible="true"/>
..
Other Maven repositories go here
..
</chain>
<url name="spring-schemas">
<artifact pattern="http://www.springframework.org/schema/[framework]/[artifact].[ext]"/>
</url>
<url name="javaee-schemas">
<artifact pattern="http://java.sun.com/xml/ns/javaee/[artifact].[ext]"/>
</url>
<url name="w3-schemas">
<artifact pattern="http://www.w3.org/2001/[artifact].[ext]"/>
</url>
</resolvers>
<modules>
<module organisation="org.springframework" name="schemas" resolver="spring-schemas"/>
<module organisation="com.sun.java" name="schemas" resolver="javaee-schemas"/>
<module organisation="org.w3" name="schemas" resolver="w3-schemas"/>
</modules>
</ivysettings>

Resources