Strange Ivy Error Message - ant

I'm using ant with maven to build a multi module project. Until now everything worked fine but now ivy complains that it finds a"bad module".
java.text.ParseException: inconsistent module descriptor file found
in 'XYZ.ivy.xml': bad module found in XYZ.ivy.xml: expected='true' found='null';
I don't know what ivy want's to tell me with this message, maybe somone else can?
The ivy xml:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:e="http://ant.apache.org/ivy/extra" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="xyz" module="ebusiness-core" revision="1.0" status="integration" publication="20100104174318" e:package="jar"/>
<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>
<publications>
<artifact conf="sources" ext="jar" type="source"/>
<artifact conf="javadoc" ext="jar" type="javadoc"/>
<artifact conf="default" ext="jar"/>
</publications>
<dependencies defaultconf="compile->default">
<dependency org="junit" name="junit" rev="4.5"/>
<dependency org="zak-components" name="zak-components" rev="1.0"/>
<dependency org="commons-collections" name="commons-collections" rev="3.2.1"/>
<dependency org="net.sf.dozer" name="dozer" rev="3.4"/>
<dependency org="org.springframework" name="spring" rev="2.0.2" transitive="false">
<exclude module="jsf-api "/>
</dependency>
<dependency name="velocity" org="velocity" rev="1.4"/>
<dependency name="mail" org="javax.mail" rev="1.4" conf="provided->default"/>
<dependency org="org.mortbay.jetty" name="servlet-api-2.5" rev="6.1.14" conf="provided->default"/>
<dependency org="org.acegisecurity" name="acegi-security" rev="1.0.1">
<exclude org="org.springframework"/>
<exclude org="tomcat"/>
</dependency>
<dependency org="dom4j" name="dom4j" rev="1.6.1"/>
<dependency org="xalan" name="xalan" rev="2.5.1"/>
<dependency org="log4j" name="log4j" rev="1.2.14"/>
<dependency org="org.hibernate" name="hibernate" rev="3.2.6.ga">
<exclude org="javax.transaction"/>
</dependency>
<dependency name="myfaces-api" org="org.apache.myfaces.core" rev="1.1.5">
<exclude org="javax.mail"/>
<exclude org="javax.resource"/>
</dependency>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"/>
<exclude org="javax.ejb"/>
<exclude org="javax.jms"/>
<exclude org="com.bea"/>
<exclude org="com.oracle"/>
<exclude org="javax.activation"/>
<exclude org="javax.ejb"/>
<exclude module="commonj-twm"/>
<exclude module="asm-util"/>
<exclude module="commons-attributes-compiler"/>
<exclude org="com.oracle"/>
<exclude org="org.apache.geronimo.specs"/>
<exclude org="openejb"/>
<exclude org="javax.portlet"/>
<exclude org="geronimo-spec"/>
<!-- exclude org=" javax.faces" module="jsf-api"/-->
</dependencies>
</ivy-module>

My stupidity. It was an old ivy.xml in a second repository ;-)

Related

Can't run PMD Apex code check using Ant and Ivy. NoClassDefFoundError

PMD 6.5.0
Need help with connecting PMD to Ant through Ivy. When I download the full package from https://pmd.github.io and just run it using Ant target everything works fine. But I don't want to add the PMD folder to the repo. So, I tried to add an Ivy dependency to the build. With JS everything works fine, but when adding an Apex dependency an error is thrown:
build.xml:216: java.lang.NoClassDefFoundError: apex/jorje/semantic/ast/AstNode
Ant's Build.xml
<target name="init">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask"
classpathref="pmd.classpath"/>
</target>
<path id="pmd.classpath">
<fileset dir="${outputdir}/lib/">
<include name="*.jar"/>
</fileset>
</path>
<target name="pmd" depends="init">
<pmd shortFilenames="true">
<ruleset>pmdRulesets/jsCustomRuleset.xml</ruleset>
<formatter type="text" toFile="whaaaaaaat.txt" toConsole="true"/>
<fileset dir="src">
</fileset>
</pmd>
</target>
Ivy's xml
<dependencies>
<dependency org="com.aquivalabs.force.ant" name="antforce" rev="0.10" conf="tasks->default">
<exclude name="ant" />
<exclude name="ant-launcher" />
</dependency>
<dependency org="net.sourceforge.pmd" name="pmd-core" rev="6.5.0">
<artifact name="pmd-core" type="jar" />
<exclude name="pmd-core-6.5.0.pom" />
</dependency>
<dependency org="net.sourceforge.pmd" name="pmd-apex" rev="6.5.0">
<artifact name="pmd-apex" type="jar" />
</dependency>
<dependency org="net.sourceforge.pmd" name="pmd-apex-jorje" rev="6.5.0">
</dependency>
<dependency org="net.sourceforge.pmd" name="pmd-javascript" rev="6.5.0">
<artifact name="pmd-javascript" type="jar" />
</dependency>
</dependencies>

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.

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/"/>

Can't get Apache Ivy not to download sources from Spring repository

In my project, I use Ivy to resolve dependencies. I use Spring's repository. The problem is that I don't want to download sources and licence/notice files. The settings which produce the problem are as follows:
ivyconf.xml
<ivysettings>
<settings defaultResolver="default" />
<resolvers namespace="apache">
<chain name="default" returnFirst="true">
<url name="com.springsource.repository.bundles.release">
<!--<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />-->
<!-- or this one? -->
<ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/ivy-[revision].xml" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
<url name="com.springsource.repository.bundles.external">
<!--<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />-->
<ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/ivy-[revision].xml" />
<artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>
</chain>
</resolvers>
</ivysettings>
ivy.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="file:///home/nikem/workspace/ark/test.xsl"?>
<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.foo-corp" module="bar" />
<configurations>
<conf name="runtime" description="Modules needed for running the application"/>
</configurations>
<dependencies>
<dependency org="org.apache.batik" name="com.springsource.org.apache.batik.dom.svg" rev="1.7.0" conf="runtime->runtime">
<exclude type="src" ext="jar" conf="runtime"/>
</dependency>
<dependency org="org.apache.batik" name="com.springsource.org.apache.batik.bridge" rev="1.7.0" conf="runtime->runtime" />
<exclude type="src" ext="jar" conf="runtime"/>
<exclude type="javadoc" ext="jar" conf="runtime"/>
<exclude type="license" ext="txt" conf="runtime"/>
</dependencies>
</ivy-module>
build.xml
<project name="yunowork" default="ivy-runtime" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="run.lib.dir" value="projlib"/>
<property name="lib.dir" value="lib"/>
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpath="${lib.dir}/ivy.jar"/>
<target name="clean-lib" description="Removes all libraries">
<delete dir="${run.lib.dir}" includes="*.jar"/>
</target>
<target name="ivy-clean-cache" description="Cleans Ivy cache">
<ivy:cleancache />
</target>
<target name="ivy-runtime">
<ivy:settings file="ivyconf.xml"/>
<ivy:resolve file="ivy.xml"/>
<ivy:retrieve pattern="${run.lib.dir}/[artifact].[ext]" conf="runtime"/>
</target>
</project>
In Ivy's cache I see:
<publications>
<artifact name="com.springsource.org.apache.batik.dom.svg"/>
<artifact name="com.springsource.org.apache.batik.dom.svg-sources" type="src" ext="jar"/>
<artifact name="license" type="license" ext="txt"/>
<artifact name="notice" type="license" ext="txt"/>
</publications>
They are published for all the configs by defaults.
The question is: Why don't the source and licence files get excluded?
One workaround to achieve what I want (no sources, no licence/notice files) was to add type to <ivy:retrieve> task.
<ivy:retrieve pattern="${run.lib.dir}/[artifact].[ext]" type="jar" />
In this case, I don't need any <exclude> tags. This, however, doesn't answer the question why exclude didn't work in the first place.
Could you try (omit the nested exclude in the first dependency):
<dependencies>
<dependency org="org.apache.batik" name="com.springsource.org.apache.batik.dom.svg" rev="1.7.0" conf="runtime->runtime"/
<dependency org="org.apache.batik" name="com.springsource.org.apache.batik.bridge" rev="1.7.0" conf="runtime->runtime" />
<exclude type="src" ext="jar" conf="runtime"/>
<exclude type="javadoc" ext="jar" conf="runtime"/>
<exclude type="license" ext="txt" conf="runtime"/>
</dependencies>
I have a feeling that the deeply nested exclude may be bugged. See here:
How to exclude commons logging dependency of spring with ivy?
It's just a hunch, everything seems very fine.
I've answered a similar question on Spring here.
In brief it amounts to:
1) Clear your ivy cache
2) Change your ivy settings file to use the Spring Maven repositories:
<ivysettings>
<settings defaultResolver="chain"/>
<resolvers>
<chain name="chain">
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="spring-release" root="http://repository.springsource.com/maven/bundles/release" m2compatible="true"/>
<ibiblio name="spring-external" root="http://repository.springsource.com/maven/bundles/external" m2compatible="true"/>
</chain>
</resolvers>
</ivysettings>
3) Try change your configuration mapping from:
<dependency .... conf="runtime->runtime"/>
to:
<dependency .... conf="runtime->default"/>
Instead of trying to exclude all of the artifacts you don't want, try explicitly including only the artifacts you do want:
<dependency org="org.apache.batik" name="com.springsource.org.apache.batik.dom.svg" rev="1.7.0" conf="runtime->runtime">
<artifact name="com.springsource.org.apache.batik.dom.svg"/>
</dependency>

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