Yes '%%' does work and much simpler then my previous work around of using custom patterns. However, in the general case SBT vanilla out of the box, should be able to a) publish a jar to the local repository and then in turn be able to subsequently retrieve/use it.
publish-local and update (which attempts to resolve from the local repository) don't seem to share the same default pattern. I've always worked around this by manually setting patterns but it seems a bit inefficient.
Create a tiny project Hello with build.sbt as follows:
name := "hello"
version := "1.0"
organization := "ray"
Publish said project via publish-local.
[info] published hello_2.9.1 to /home/ray/.ivy2/local/ray/hello_2.9.1/1.0/jars/hello_2.9.1.jar
[info] published ivy to /home/ray/.ivy2/local/ray/hello_2.9.1/1.0/ivys/ivy.xml
Now lets pretend we want to use the above published local artifact as a standard sbt dependency.
An equally simple sbt.build of a project which uses hello.jar