Hello.

I'm struggling to create a local "filesystem" repository with "ivy:install".
Here is the relevant part of my "ivysettings" file:

[...]

  <namespaces>

    <namespace name="apache-rule_org-is-module">
      <rule>
        <fromsystem>
          <src org="org.apache"
               module=".+"/>

          <dest org="$m0"
                module="$m0"/>
        </fromsystem>
        
        <tosystem>
          <src org=".+"
               module=".+"/>

          <dest org="org.apache"
                module="$m0"/>
        </tosystem>
      </rule>
    </namespace>

  </namespaces>

  <resolvers>

    <filesystem name="local-rep">
      <ivy 
pattern="${repo.dir}/[organisation]/[module]/ivys/ivy-[revision].xml"/>
      <artifact 
pattern="${repo.dir}/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
    </filesystem>

    <chain name="apache"
           returnFirst="true">
      <ibiblio name="apache-rule_org-is-module"
               m2compatible="true"
               root="http://repo2.maven.org/maven2";
               namespace="apache-rule_org-is-module"/>
      <ibiblio name="apache-no-rule"
               m2compatible="true"
               root="http://repo2.maven.org/maven2"/>
    </chain>

  </resolvers>

[...]

The rule is quite similar to the one in the "buid a repository" tutorial.
I used it as

    <ivy:install organisation="org.apache"
                 module="log4j"
                 revision="1.2.15"
                 from="apache"
                 to="local-rep"
                 overwrite="true"/>

It's fine for creating the repository structure but it seems to wrongly
alter the dependency list written to the automatically created ivy file,
as shown in this excerpt:

        <dependencies>
                <dependency org="org.apache" name="mail" rev="1.4" force="true" 
conf="compile->compile(*),master(*);runtime->runtime(*)"/>
                <dependency org="org.apache" name="jms" rev="1.1" force="true" 
conf="compile->compile(*),master(*);runtime->runtime(*)"/>
                <dependency org="org.apache" name="jmxtools" rev="1.2.1" 
force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
                <dependency org="org.apache" name="jmxri" rev="1.2.1" 
force="true" conf="compile->compile(*),master(*);runtime->runtime(*)"/>
                <dependency org="org.apache" name="oro" rev="2.0.8" 
force="true" conf="test->runtime(*),master(*)"/>
                <dependency org="org.apache" name="junit" rev="3.8.1" 
force="true" conf="test->runtime(*),master(*)"/>
        </dependencies>

Indeed, the "org" attribute in the first <dependency> above should in fact
be "javax.mail", but the original value has been replaced.
As a consequence, "ivy" can never resolve these non-exsistent dependencies.

Conversely, if I remove the rule, the dependencies are correct but local
repository structure becomes
  log4j/log4j
whereas I want it to be
  org.apache/log4j

What am I doing wrong?

Best,
Gilles

Reply via email to