[ 
https://issues.apache.org/jira/browse/IVY-1322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13156921#comment-13156921
 ] 

Björn Kautler commented on IVY-1322:
------------------------------------

Workaround: Deactivate validation on the launch4j resolver, then everything is 
working as expected
                
> Generated default module descriptors with extra attributes are not working 
> because of missing namespace
> -------------------------------------------------------------------------------------------------------
>
>                 Key: IVY-1322
>                 URL: https://issues.apache.org/jira/browse/IVY-1322
>             Project: Ivy
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.2.0, trunk
>            Reporter: Björn Kautler
>
> The following three files
> {code:title=ivysettings.xml|borderStyle=solid}
> <?xml version="1.0" encoding="UTF-8"?>
> <ivysettings>
>         <settings defaultResolver="default"/>
>         <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>
>                 <url name="launch4j">
>                         <artifact 
> pattern="http://downloads.sourceforge.net/project/launch4j/launch4j-3/[revision]/[artifact]-[revision]-[classifier].[ext]";
>  />
>                 </url>
>         </resolvers>
>         <modules>
>                 <module organisation="net.sf.launch4j" resolver="launch4j" />
>         </modules>
> </ivysettings>
> {code}
> {code:title=ivy.xml|borderStyle=solid}
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="2.0"
>             xmlns:e="http://ant.apache.org/ivy/extra";
>             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>             
> xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd";>
>         <info organisation="com.example" module="ivy"/>
>         <configurations confmappingoverride="true"
>                         defaultconfmapping="%->default">
>                 <conf name="launch4j"/>
>         </configurations>
>         <dependencies defaultconf="compile;sources;javadoc">
>                 <dependency org="net.sf.launch4j" name="launch4j" rev="3.0.2" 
> conf="launch4j">
>                         <artifact name="launch4j" e:classifier="win32" 
> type="zip"/>
>                         <artifact name="launch4j" e:classifier="macosx" 
> type="tgz"/>
>                         <artifact name="launch4j" e:classifier="linux" 
> type="tgz"/>
>                 </dependency>
>         </dependencies>
> </ivy-module>
> {code}
> {code:title=build.xml|borderStyle=solid}
> <?xml version="1.0"?>
> <project default="retrieve" xmlns:ivy="antlib:org.apache.ivy.ant">
>         <target name="check-ivy">
>                 <available property="ivy.jar.present"
>                            file="lib/ivy/ivy-2.2.0.jar"
>                            type="file"/>
>         </target>
>         <target name="download-ivy"
>                 depends="check-ivy"
>                 unless="ivy.jar.present">
>                 <mkdir dir="lib/ivy"/>
>                 <get 
> src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar";
>                      dest="lib/ivy/ivy-2.2.0.jar"
>                      usetimestamp="true"/>
>         </target>
>         <target name="init-ivy"
>                 depends="download-ivy">
>                 <property name="ivy.retrieve.pattern"
>                           value="lib/[conf]/[artifact](-[classifier]).[ext]"/>
>                 <taskdef resource="org/apache/ivy/ant/antlib.xml"
>                          classpath="lib/ivy/ivy-2.2.0.jar"
>                          loaderref="ivy.loader"
>                          uri="antlib:org.apache.ivy.ant"/>
>                 <ivy:settings file="ivysettings.xml"/>
>         </target>
>         <target name="retrieve"
>                 description="retrieve the dependencies"
>                 depends="init-ivy">
>                 <ivy:retrieve sync="true"/>
>                 <ivy:retrieve pattern="lib/ivy/[artifact]-[revision].[ext]"
>                               organisation="org.apache.ivy"
>                               module="ivy"
>                               revision="2.2.0"
>                               conf="default"
>                               inline="true"/>
>         </target>
> </project>
> {code}
> produce the following file
> {code:title=~/.ivy2/cache/net.sf.launch4j/launch4j/ivy-3.0.2.xml|borderStyle=solid}
> <?xml version="1.0" encoding="UTF-8"?>
> <ivy-module version="2.0">
>         <info organisation="net.sf.launch4j"
>                 module="launch4j"
>                 revision="3.0.2"
>                 status="release"
>                 publication="20111120230713"
>                 default="true"
>         />
>         <configurations>
>                 <conf name="default" visibility="public"/>
>         </configurations>
>         <publications>
>                 <artifact name="launch4j" type="zip" ext="zip" conf="default" 
> classifier="win32"/>
>                 <artifact name="launch4j" type="tgz" ext="tgz" conf="default" 
> classifier="macosx"/>
>                 <artifact name="launch4j" type="tgz" ext="tgz" conf="default" 
> classifier="linux"/>
>         </publications>
> </ivy-module>
> {code}
> In this file, the classifier attributes do not have a namespace which will 
> cause validation to fail and the build cannot be done offline, because 
> launch4j is redownloaded on every retrieve like seen here:
> {code}
> [ivy:retrieve]        problem while parsing cached ivy file for: 
> net.sf.launch4j#launch4j;3.0.2: [xml parsing: ivy-3.0.2.xml:14:85: 
> cvc-complex-type.3.2.2: Attribute 'classifier' is not allowed to appear in 
> element 'artifact'. in 
> file:/home/vampire/.ivy2/cache/net.sf.launch4j/launch4j/ivy-3.0.2.xml
> [ivy:retrieve] , xml parsing: ivy-3.0.2.xml:15:86: cvc-complex-type.3.2.2: 
> Attribute 'classifier' is not allowed to appear in element 'artifact'. in 
> file:/home/vampire/.ivy2/cache/net.sf.launch4j/launch4j/ivy-3.0.2.xml
> [ivy:retrieve] , xml parsing: ivy-3.0.2.xml:16:85: cvc-complex-type.3.2.2: 
> Attribute 'classifier' is not allowed to appear in element 'artifact'. in 
> file:/home/vampire/.ivy2/cache/net.sf.launch4j/launch4j/ivy-3.0.2.xml
> ...
> [ivy:retrieve]         trying 
> http://downloads.sourceforge.net/project/launch4j/launch4j-3/3.0.2/launch4j-3.0.2-win32.zip
> [ivy:retrieve]                tried 
> http://downloads.sourceforge.net/project/launch4j/launch4j-3/3.0.2/launch4j-3.0.2-win32.zip
> [ivy:retrieve]        launch4j: no ivy file found for 
> net.sf.launch4j#launch4j;3.0.2: using default data
> ...
> [ivy:retrieve] :: resolution report :: resolve 790ms :: artifacts dl 4ms
>       ---------------------------------------------------------------------
>       |                  |            modules            ||   artifacts   |
>       |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
>       ---------------------------------------------------------------------
>       |     launch4j     |   1   |   1   |   0   |   0   ||   3   |   0   |
>       ---------------------------------------------------------------------
> {code}
> In DefaultModuleDescriptor.newDefaultInstance() line 112 getExtraAttributes() 
> is used and thus the namespace is lost. Even if getQualifiedExtraAttributes() 
> would be used this would not suffice, as then the namespace declaration is 
> missing and again the validation would fail.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to