Use maven repository as local ivy cache

2019-03-08 19:09发布

问题:

Is there any possibility to use local Maven repository (~/.m2) as local Ivy cache (~/.ivy)? They have different layouts.

Sometimes I use Maven and sometimes I use SBT which uses Ivy underneath, so I have 2 copies of same libs in both Maven and Ivy. I would like to use same dir thus saving disk space and network.

Thanks.

回答1:

You can specify the cache and the layout of the cache by using the

  <cache/> Tag

.

I think you will have to alter the patterns for the artifacts/ivy.xml files.
The Tag is described here: http://ant.apache.org/ivy/history/2.0.0/settings/caches.html.
It seems that it should work, but I've never tried :).



回答2:

To save network, just configure ivy to use local Maven repository

      <property name="local-maven2-dir" value="${user.home}/.m2/repository/" />
      <filesystem name="local-maven-2" m2compatible="true">
            <artifact
                pattern="${local-maven2-dir}/[organisation]/[module]/[revision]/[module]-[revision].[ext]" />
            <ivy
                pattern="${local-maven2-dir}/[organisation]/[module]/[revision]/[module]-[revision].pom" />
        </filesystem>


回答3:

I have added the cache setting in following file. Is this correct method? SBT is still downloading the files which are present in Maven local repo ( ~/.m2/repository ).

$ cat ~/.ivy2/ivysettings.xml
<ivysettings>
    <properties environment="env" />
    <caches defaultCacheDir="${env.WORKSPACE}/.ivy2/cache" />

    <property name="local-maven2-dir" value="${user.home}/.m2/repository/" />
    <filesystem name="local-maven-2" m2compatible="true" force="false" local="true">
      <artifact pattern="${gerald.repo.dir}/[organisation]/[module]/[revision]/[module]-[revision].[ext]"/>
      <ivy pattern="${gerald.repo.dir}/[organisation]/[module]/[revision]/[module]-[revision].pom"/>
    </filesystem>

    <chain name="internal" dual="true">
      <resolver ref="local-maven-2"/>
      <resolver ref="apache-snapshot"/> 
      <resolver ref="maven2"/>
    </chain>
</ivysettings>


标签: maven-2 ivy