ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Neil Miller <neil_mil...@livewiremobile.com>
Subject Re: module configurations issue on import
Date Wed, 02 Mar 2011 20:02:41 GMT
Hey Tom,

Thanks for the link, don't know how that didn't turn up in my searches. 
I'd actually just figured that it out by tracing through the source code 
and it all makes sense now. Just wish it was clearer in the 
documentation of pattern substitutions.

For your situation the extra attributes are perfect, I'm still stuck 
though since I'm installing from maven not publishing my own artifacts. 
I can, like you, use [type], that works, but is less than ideal. The 
attribute I need [m:classifier] doesn't seem to get into extra 
attributes list and I'm not sure why that is. Perhaps because it's from 
the "http://ant.apache.org/ivy/maven" namespace, though I don't see any 
code that is filtering by that or "http://ant.apache.org/ivy/extra".

-n

On 03/02/2011 07:37 AM, tomduck wrote:
> 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>
>>
>>
>>
>>

Mime
View raw message