How am I to know which configurations are available for a particular dependency?
I understand these are common configurations: default,master,compile,provided,test,system,sources,javadoc,optional,runtime
But some dependencies do not have all of these defined, and others define other custom configurations. I don’t see any mention of the available configurations on springsource or maven repo.
Below is my embarrassingly hacked-together ivy.xml. Notice that I define org.springframework.spring-library conf as “runtime”. This fails because org.springframework.spring-library does not have a “runtime” conf.
<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.myapp" module="MyAppName" revision="1.0"/>
<configurations>
<conf name="compile" visibility="public" description="Dependencies needed for compile"/>
<conf name="runtime" visibility="public" extends="compile" description="Dependencies needed for runtime"/>
<conf name="test" visibility="private" description="Test dependencies"/>
</configurations>
<dependencies>
<dependency org="org.springframework" name="org.springframework.spring-library" rev="3.1.0.RELEASE" conf="runtime"/>
<dependency org="org.springframework.security" name="spring-security-web" rev="3.1.0.RELEASE" transitive="false" conf="*"/>
<dependency org="org.springframework.security" name="spring-security-config" rev="3.1.0.RELEASE" transitive="false" conf="*"/>
<dependency org="org.springframework.security" name="spring-security-core" rev="3.1.0.RELEASE" transitive="false" conf="*"/>
<dependency org="org.codehaus.jackson" name="com.springsource.org.codehaus.jackson" rev="1.4.3" conf="runtime->*"/>
<dependency org="org.codehaus.jackson" name="com.springsource.org.codehaus.jackson.mapper" rev="1.4.3" conf="runtime->*"/>
<dependency org="org.apache.httpcomponents" name="com.springsource.org.apache.httpcomponents.httpclient" rev="4.1.1" conf="runtime->*" />
<dependency org="org.aspectj" name="org.aspectj-library" rev="1.6.5.RELEASE" conf="runtime,compile->runtime(default)"/>
<dependency org="net.sourceforge.cglib" name="com.springsource.net.sf.cglib" rev="2.2.0" conf="compile->*"/>
<dependency org="log4j" name="log4j" rev="1.2.14" conf="runtime->*"/>
<dependency org="joda-time" name="joda-time" rev="2.0" conf="runtime,compile->runtime(default)"/>
<exclude type="license" ext="txt"/>
<exclude type="notice" ext="txt"/>
<exclude org="javax.servlet" conf="runtime"/>
<exclude org="javax.el" conf="runtime"/>
<exclude org="javax.faces" conf="runtime"/>
<exclude org="javax.portlet" conf="runtime"/>
<exclude org="javax.xml.rpc" conf="runtime"/>
<exclude org="javax.xml.soap" conf="runtime"/>
<exclude org="javax.xml.ws" conf="runtime"/>
<exclude org="commons-logging" conf="runtime"/>
</dependencies>
</ivy-module>
org.springframework.spring-librarydoes appear to have aruntimeconfiguration. Specifically the configurations for spring-library are:To get this list, I added the following dependency and performed a resolve (note: no
confspecfied)I then had a look at the ivy file for
org.springframework.spring-libraryin my cache (normally found at${user.home}/.ivy2/cache/org.springframework/org.springframework.spring-library/ivy-3.1.0.RELEASE.xml).There may be a easier way to get the list of configurations, but the above does the trick for me.
Since the SpringSource EBR provides ivy files, you can get the configurations directly from
http://repository.springsource.com/ivy/libraries/release/org.springframework/org.springframework.spring-library/3.1.0.RELEASE/ivy-3.1.0.RELEASE.xml, but IMO figuring out the correct url is more effort that the technique used above.