Hi there,
My project casperdatasets-io has a dependency on com.google.code.gson. Ivy correctly resolves casperdatasets-io and the gson-2.1.jar artifact of com.google.code.gson.
My project JAMSIM depends on casperdatasets-io. But when Ivy resolves the default conf of JAMSIM and I inspect the Ivy report for JAMSIM, it does not include the com.google.code.gson artifact:
gson by com.google.code.gson
Revision: 2.1
Home Page
http://code.google.com/p/google-gson/
Status release
Publication 20111231202009
Resolver public
Configurations default, compile, master(*), runtime, compile(*), javadoc, runtime(*), master, sources
Artifacts size 0 kB (0 kB downloaded, 0 kB in cache)
Licenses The Apache Software License, Version 2.0
Required by
Organisation Name Revision In Configurations Asked Revision
net.casper casperdatasets-io 2.1.1 default, master(*), compile(*), javadoc, runtime(*), sources latest.integration
Dependencies
No dependency
Artifacts
No artifact
Gson ivy.xml has this:
<configurations>
<conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf" extends="runtime,master"/>
<conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
<conf name="compile" visibility="public" description="this is the default scope, used if none is specified. Compile dependencies are available in all classpaths."/>
<conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
<conf name="runtime" visibility="public" description="this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath." extends="compile"/>
<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases." extends="runtime"/>
<conf name="system" visibility="public" description="this scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repository."/>
<conf name="sources" visibility="public" description="this configuration contains the source artifact of this module, if any."/>
<conf name="javadoc" visibility="public" description="this configuration contains the javadoc artifact of this module, if any."/>
<conf name="optional" visibility="public" description="contains all optional dependencies"/>
</configurations>
<publications>
<artifact name="gson" type="jar" ext="jar" conf="master"/>
<artifact name="gson" type="source" ext="jar" conf="sources" m:classifier="sources"/>
<artifact name="gson" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc"/>
</publications>
I'm resolving the default conf of JAMSIM ivy.xml... In JAMSIM ivy.xml I have:
<dependency org="net.casper" name="casperdatasets-io" rev="latest.integration" conf="*->@"/>
In casperdatasets-io ivy.xml I have:
<dependency org="com.google.code.gson" name="gson" rev="latest.integration" conf="*->@"/>
When I change casperdatasets-io ivy.xml to
<dependency org="com.google.code.gson" name="gson" rev="latest.integration" conf="default"/>
It works.. but I don't understand why it shouldn't work with conf="*->@"
What do I need to do to get this to work with conf="*->@" ?
I'm using Ivy 2.2.0.
Many thanks,
Oliver
Here are my files in full:
Casperdatasets-io ivy.xml
--------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info organisation="net.casper" module="${name}" revision="${version}" status="release">
<license name="LGPL" url="
http://www.gnu.org/licenses/lgpl.html" />
<description homepage="
http://code.google.com/p/casperdatasets/">
Casper datasets I/O modules for loading datasets to/from files
and Java POJO beans.
</description>
</info>
<configurations>
<conf name="default" visibility="public" description="binary artifacts of this module and its dependencies"/>
<conf name="sources" visibility="public" description="source artifacts of this module and its dependencies"/>
<conf name="javadoc" visibility="public" description="javadoc artifacts of this module and its dependencies"/>
</configurations>
<publications>
<artifact conf="default" />
<artifact name="${name}-sources" type="source" conf="sources" ext="jar" />
<artifact name="${name}-javadoc" type="javadoc" conf="javadoc" ext="jar" />
<artifact type="pom" ext="pom" conf="default"/>
</publications>
<dependencies>
<dependency org="net.casper" name="casperdatasets" rev="latest.integration" conf="*->@"/>
<dependency org="org.omancode" name="omcutil" rev="latest.integration" conf="*->@"/>
<dependency org="org.omancode" name="readmytables" rev="latest.integration" conf="*->@"/>
<dependency org="org.omancode" name="readmytablesfromfiles" rev="latest.integration" conf="*->@"/>
<dependency org="commons-lang" name="commons-lang" rev="latest.integration" conf="*->@"/>
<dependency org="commons-beanutils" name="commons-beanutils" rev="latest.integration" conf="*->@">
<exclude name="commons-collections"/>
</dependency>
<dependency org="net.sourceforge.supercsv" name="supercsv" rev="latest.integration" />
<dependency org="com.google.code.gson" name="gson" rev="latest.integration" conf="*->@"/>
<!-- exclude dependencies artifacts based on configuration -->
<exclude type="source" ext="*" conf="master,javadoc"/>
<exclude type="javadoc" ext="*" conf="master,sources"/>
<exclude type="jar" ext="*" conf="sources,javadoc"/>
</dependencies>
</ivy-module>
Casperdatasets-io ivysettings.xml
-----------------------------------------
<ivysettings>
<include url="${ivy.default.settings.dir}/ivysettings.xml" />
<!-- default, i.e use local, shared and public resolvers -->
<settings defaultResolver="default" />
<!-- make build.properites available for ivy.xml -->
<properties file="${ivy.basedir}/build.properties" />
<resolvers>
<ibiblio name="omcutil-repo" root="
http://omcutil.googlecode.com/git/repo/" m2compatible="true" />
<ibiblio name="readmytables-repo" root="
http://readmytables.googlecode.com/git/repo/" m2compatible="true" />
<ibiblio name="casper-repo" root="
http://casperdatasets.googlecode.com/svn/trunk/repo/" m2compatible="true" />
<!-- the ivyroundup packager repo -->
<packager name="ivyroundup" buildRoot="${user.home}/.ivy2/packager/build"
resourceCache="${user.home}/.ivy2/packager/cache"
preserveBuildDirectories="true">
<ivy
pattern="
http://ivyroundup.googlecode.com/svn/trunk/repo/modules/[organisation]/[module]/[revision]/ivy.xml" />
<artifact
pattern="
http://ivyroundup.googlecode.com/svn/trunk/repo/modules/[organisation]/[module]/[revision]/packager.xml" />
</packager>
<!-- for publishing to -->
<filesystem name="local-maven-repo" m2compatible="true">
<artifact pattern="${ivy.basedir}/../repo/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
</filesystem>
</resolvers>
<modules>
<!-- define resolvers for specific modules -->
<module organisation="net.sourceforge.supercsv" resolver="ivyroundup" />
<module organisation="net.casper" resolver="casper-repo" />
<module organisation="org.omancode" name="omcutil" resolver="omcutil-repo" />
<module organisation="org.omancode" name="readmytables" resolver="readmytables-repo" />
<module organisation="org.omancode" name="readmytablesfromfiles" resolver="readmytables-repo" />
</modules>
</ivysettings>
JAMSIM ivy.xml
--------------------
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info organisation="org.jamsim" module="jamsim" revision="${version}" status="release">
<license name="LGPL" url="
http://www.gnu.org/licenses/lgpl.html" />
<description homepage="
http://code.google.com/p/jamsim/">
</description>
</info>
<configurations>
<conf name="default" visibility="public" description="binary artifacts of this module and its dependencies"/>
<conf name="sources" visibility="public" description="source artifacts of this module and its dependencies"/>
<conf name="javadoc" visibility="public" description="javadoc artifacts of this module and its dependencies"/>
</configurations>
<publications>
<artifact conf="default"/>
<artifact name="${name}-sources" type="source" conf="sources" ext="jar" />
<artifact name="${name}-javadoc" type="javadoc" conf="javadoc" ext="jar" />
<artifact type="pom" ext="pom" conf="default"/>
</publications>
<dependencies>
<dependency org="org.ascape" name="ascape" rev="5.6.1"/>
<dependency org="net.casper" name="casperdatasets-ext" rev="latest.integration" conf="*->@"/>
<dependency org="net.casper" name="casperdatasets-io" rev="latest.integration" conf="*->@"/>
<dependency org="org.omancode" name="romanface" rev="latest.integration" conf="*->@"/>
<dependency org="org.omancode" name="omcutil" rev="[1.2.4,)" conf="*->@"/>
<dependency org="org.rosuda" name="javaGD" rev="latest.integration"/>
<dependency org="org.javabuilders" name="javabuilder-swing" rev="1.1-RC4"/>
<!-- slf4j needed for javabuilders -->
<dependency org="org.slf4j" name="slf4j-log4j12" rev="latest.integration"/>
<dependency org="colt" name="colt" rev="latest.integration">
<exclude name="concurrent" />
</dependency>
<dependency org="org.jedit" name="jedit-textArea" rev="latest.integration"/>
<!-- exclude dependencies artifacts based on configuration -->
<exclude type="source" ext="*" conf="default,javadoc"/>
<exclude type="javadoc" ext="*" conf="default,sources"/>
<exclude type="jar" ext="*" conf="sources,javadoc"/>
</dependencies>
</ivy-module>
JAMSIM ivysettings.xml
-----------------------------
<ivysettings>
<include url="${ivy.default.settings.dir}/ivysettings.xml" />
<!-- default, i.e use local, shared and public resolvers -->
<settings defaultResolver="default" />
<!-- make build.properties available for ivy.xml -->
<properties file="${ivy.basedir}/build.properties" />
<resolvers>
<ibiblio name="romanface-repo" root="
http://romanface.googlecode.com/git/repo/" m2compatible="true" />
<ibiblio name="omcutil-repo" root="
http://omcutil.googlecode.com/git/repo/" m2compatible="true" />
<ibiblio name="readmytables-repo" root="
http://readmytables.googlecode.com/git/repo/" m2compatible="true" />
<ibiblio name="jamsim-repo" root="
http://jamsim.googlecode.com/git/repo/" m2compatible="true" />
<ibiblio name="casper-repo" root="
http://casperdatasets.googlecode.com/svn/trunk/repo/" m2compatible="true" />
<!-- the javabuilders maven repo -->
<ibiblio name="javabuilders" root="
http://javabuilders.googlecode.com/svn/repo/"
m2compatible="true" />
<!-- the ivyroundup packager repo -->
<packager name="ivyroundup" buildRoot="${user.home}/.ivy2/packager/build"
resourceCache="${user.home}/.ivy2/packager/cache"
preserveBuildDirectories="true">
<ivy
pattern="
http://ivyroundup.googlecode.com/svn/trunk/repo/modules/[organisation]/[module]/[revision]/ivy.xml" />
<artifact
pattern="
http://ivyroundup.googlecode.com/svn/trunk/repo/modules/[organisation]/[module]/[revision]/packager.xml" />
</packager>
<!-- for publishing to -->
<filesystem name="local-maven-repo" m2compatible="true">
<artifact pattern="${ivy.basedir}/../repo/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/>
</filesystem>
</resolvers>
<modules>
<!-- define resolvers for specific modules -->
<module organisation="net.casper" resolver="local" />
<module organisation="org.beanshell" resolver="romanface-repo" />
<module organisation="org.rosuda" resolver="romanface-repo" />
<module organisation="org.omancode" name="omcutil" resolver="omcutil-repo" />
<module organisation="org.omancode" name="readmytables" resolver="readmytables-repo" />
<module organisation="org.omancode" name="readmytablesfromfiles" resolver="readmytables-repo" />
<module organisation="org.javabuilders" resolver="javabuilders" />
<module organisation="net.sourceforge.supercsv" resolver="ivyroundup" />
<module organisation="org.ascape" resolver="ivyroundup" />
<module organisation="org.omancode" name="romanface" resolver="romanface-repo" />
<module organisation="org.jedit" resolver="jamsim-repo" />
</modules>
</ivysettings>
Gson ivy.xml
----------------
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:m="
http://ant.apache.org/ivy/maven">
<info organisation="com.google.code.gson"
module="gson"
revision="2.1"
status="release"
publication="20111231202009"
>
<license name="The Apache Software License, Version 2.0" url="
http://www.apache.org/licenses/LICENSE-2.0.txt" />
<description homepage="
http://code.google.com/p/google-gson/">
Google Gson library
</description>
<m:properties__project.build.sourceEncoding>UTF-8</m:properties__project.build.sourceEncoding>
<m:properties__sonatypeOssDistMgmtSnapshotsUrl>
https://oss.sonatype.org/content/repositories/snapshots/</m:properties__sonatypeOssDistMgmtSnapshotsUrl>
<m:maven.plugins>org.apache.maven.plugins__maven-enforcer-plugin__1.0-beta-1|org.apache.maven.plugins__maven-enforcer-plugin__1.0-beta-1|org.apache.maven.plugins__maven-compiler-plugin__2.3.2|org.apache.maven.plugins__maven-jar-plugin__2.3.2|org.apache.maven.plugins__maven-source-plugin__2.1.2|org.apache.maven.plugins__maven-javadoc-plugin__2.8|org.apache.maven.plugins__maven-eclipse-plugin__2.8|org.apache.maven.plugins__maven-jxr-plugin__2.2|org.apache.maven.plugins__maven-pmd-plugin__2.5|org.apache.maven.plugins__maven-checkstyle-plugin__2.6|org.codehaus.mojo__taglist-maven-plugin__2.4|org.codehaus.mojo__cobertura-maven-plugin__2.4|org.apache.maven.plugins__maven-release-plugin__null|null__maven-assembly-plugin__2.2.2</m:maven.plugins>
</info>
<configurations>
<conf name="default" visibility="public" description="runtime dependencies and master artifact can be used with this conf" extends="runtime,master"/>
<conf name="master" visibility="public" description="contains only the artifact published by this module itself, with no transitive dependencies"/>
<conf name="compile" visibility="public" description="this is the default scope, used if none is specified. Compile dependencies are available in all classpaths."/>
<conf name="provided" visibility="public" description="this is much like compile, but indicates you expect the JDK or a container to provide it. It is only available on the compilation classpath, and is not transitive."/>
<conf name="runtime" visibility="public" description="this scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath." extends="compile"/>
<conf name="test" visibility="private" description="this scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases." extends="runtime"/>
<conf name="system" visibility="public" description="this scope is similar to provided except that you have to provide the JAR which contains it explicitly. The artifact is always available and is not looked up in a repository."/>
<conf name="sources" visibility="public" description="this configuration contains the source artifact of this module, if any."/>
<conf name="javadoc" visibility="public" description="this configuration contains the javadoc artifact of this module, if any."/>
<conf name="optional" visibility="public" description="contains all optional dependencies"/>
</configurations>
<publications>
<artifact name="gson" type="jar" ext="jar" conf="master"/>
<artifact name="gson" type="source" ext="jar" conf="sources" m:classifier="sources"/>
<artifact name="gson" type="javadoc" ext="jar" conf="javadoc" m:classifier="javadoc"/>
</publications>
<dependencies>
<dependency org="junit" name="junit" rev="3.8.2" force="true" conf="test->runtime(*),master(*)"/>
</dependencies>
</ivy-module>