ivysettings.xml: add local maven path

10,687

Solution 1

Try the following ivysettings.xml file:

<ivysettings>
    <settings defaultResolver="default"/>
    <property name="m2-pattern" value="${user.home}/.m2/repository/[organisation]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]" override="false" />
    <resolvers>
        <chain name="default">
            <filesystem name="local-maven2" m2compatible="true" >
                <artifact pattern="${m2-pattern}"/>
                <ivy pattern="${m2-pattern}"/>
            </filesystem>
            <ibiblio name="central" m2compatible="true"/>
        </chain>
    </resolvers>
</ivysettings>

It includes Maven central in case the dependency is missing from the local Maven repo.

Note:

The benefits of re-using a local Maven repository are limited. Ivy caches jars retrieved from repostories.

Solution 2

Ivy dependencies are resolved with "Resolvers".

This page is pretty good for understanding the basics of how they work.

http://ant.apache.org/ivy/history/latest-milestone/settings/resolvers.html

Specifically : How can I "resolve" a local maven repository ?

Ivy has a "FileSystemResolver" which, rather than taking in a web address, can simply resolve from a local, root path. Note that there are some gotchas when things get complicated, like this one : http://ant.apache.org/ivy/history/latest-milestone/settings/resolvers.html . Resolvers are similar to maven Repository tags, in that they define a resource.

A quick word of advice

Remember that once you customize ivysettings.xml if you are using an IDE, you will have to tell it to specifically use YOUR ivysettings.xml file, rather than some internal default.

Solution 3

I found out that in the more recent versions of sbt you can do

sbt publish-m2
Share:
10,687

Related videos on Youtube

pistacchio
Author by

pistacchio

Updated on June 04, 2022

Comments

  • pistacchio
    pistacchio almost 2 years

    How to add a local path (not URL) to ivysettings.xml? I need to add my Maven local repository (/Users/me/.m2/repository to it.

    Thanks

  • Brian Topping
    Brian Topping over 9 years
    Awesome, how does the location of the Maven repository get modified with this command?
  • Always Asking
    Always Asking over 9 years
    'sbt publish-m2' publishes to ~/.m2 directory. Is this what you are asking?
  • Brian Topping
    Brian Topping over 9 years
    Thanks @Always, I was trying to understand why SBT wasn't paying attention to <localRepository> in the settings.xml.
  • mephi42
    mephi42 over 8 years
    It's worth considering forcing .pom extension in ivy patterns, like it's suggested here. This way Ivy's POM conversion logic will kick in, which is relevant if you need to reference synthetic configurations like master.
  • Mark O'Connor
    Mark O'Connor over 8 years
    @mephi42 I did not know that, neat! Using the Maven local repo is a bad idea IMHO. It functions more like a cache. Makes much more sense to configure both ivy and Maven to pull from the same remote repos!
  • Crystal
    Crystal over 4 years
    It's sbt publishM2 for me