Hey Neil, We've been struggling with the same thing today and have found the following Ivy issue (https://issues.apache.org/jira/browse/IVY-472) which explains why this won't work. In short it's a cardinality issue since an artifact is allowed to belong to many configurations so it's hard to decide where it should go.
We are trying to configure Ivy to publish binaries compiled for different platforms and also platform independent headers. At the moment we are using [type] (albeit a little incorrectly) to achieve the same thing. We are looking at extra attributes and using a custom e:platform attribute to do what we want. I have some problems with it at the moment in that the attribute is not available when publishing the ivy file so I can't put it in the right directory in my repository. Anyway - hope that helps. Tom Neil Miller-6 wrote: > > I'm having an issue with importing modules from a public maven repo > (http://repo1.maven.org/maven2). I'm following the tutorial "Building a > repository" with namespace rules > (http://ant.apache.org/ivy/history/latest-milestone/tutorial/build-repository/advanced.html), > > to import log4j version 1.2.16 > > At first I was having getting errors about attempts to overwrite an > artifact. At that point I was using the following artifact pattern: > ${basedir}/repository/[organisation]/[module]/[revision]/[artifact].[ext] > > Looking at the ivy file for log4j, I saw that the jars and noticed that > the artifacts for various jars all had the same name: > <publications> > <artifact name="log4j" type="bundle" ext="jar" conf="master"/> > <artifact name="log4j" type="source" ext="jar" conf="sources" > m:classifier="sources"/> > <artifact name="log4j" type="javadoc" ext="jar" conf="javadoc" > m:classifier="javadoc"/> > </publications> > > So I added [conf] to the path and tried again, it still didn't work, so > I added [type] > (Artifact pattern: > "${basedir}/repository/[organisation]/[module]/[revision]/[conf]/[type]s/[artifact].[ext]") > and got the following directory structure: > > apache/log4j/1.2.16/ > - default/ > - bundles/ > - log4j.jar > - log4j.jar.md5 > - log4j.jar.sha1 > - javadocs/ > - log4j.jar > - log4j.jar.md5 > - log4j.jar.sha1 > - sources/ > - log4j.jar > - log4j.jar.md5 > - log4j.jar.sha1 > > Where the artifacts for the three configurations are all under "default" > rather than "master", "sources", and "javaadoc". Is there something I'm > missing here about the way [conf] works in the pattern? (really wish I > could get at the classifier :) ) > > Thanks, > -n > > > The full ivy file for log4j: > > <?xml version="1.0" encoding="UTF-8"?> > <ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven"> > <info organisation="apache" > module="log4j" > revision="1.2.16" > status="release" > publication="20100331002544" > namespace="maven2" > > > <license name="The Apache Software License, Version 2.0" > url="http://www.apache.org/licenses/LICENSE-2.0.txt" /> > <description homepage="http://logging.apache.org/log4j/1.2/"> > Apache Log4j 1.2 > </description> > <m:maven.plugins>org.apache.maven.plugins__maven-resources-plugin__null|null__maven-surefire-plugin__2.5|null__maven-compiler-plugin__2.1|null__maven-jar-plugin__2.3|null__maven-antrun-plugin__1.2|null__maven-assembly-plugin__2.2-beta-5|null__maven-javadoc-plugin__2.6.1|null__maven-release-plugin__2.0-beta-9|null__maven-source-plugin__2.1.1|org.codehaus.mojo__clirr-maven-plugin__2.2.2|org.codehaus.mojo__rat-maven-plugin__1.0-alpha-3|org.apache.felix__maven-bundle-plugin__2.0.1</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="log4j" type="bundle" ext="jar" conf="master"/> > <artifact name="log4j" type="source" ext="jar" conf="sources" > m:classifier="sources"/> > <artifact name="log4j" type="javadoc" ext="jar" conf="javadoc" > m:classifier="javadoc"/> > </publications> > <dependencies> > <dependency org="javax.mail" name="mail" rev="1.4.1" force="true" > conf="optional->compile(*),master(*)"/> > <dependency org="apache" name="oro" rev="2.0.8" force="true" > conf="test->runtime(*),master(*)"/> > <dependency org="junit" name="junit" rev="3.8.2" force="true" > conf="test->runtime(*),master(*)"/> > <dependency org="org.apache.geronimo.specs" name="geronimo-jms_1.1_spec" > rev="1.0" force="true" conf="optional->compile(*),master(*)"/> > </dependencies> > </ivy-module> > > > > -- View this message in context: http://old.nabble.com/module-configurations-issue-on-import-tp31036969p31048929.html Sent from the ivy-user mailing list archive at Nabble.com.
