Sometimes, you are building your private project, and you developed some personal library for your very own usage. you do not want to publish your library to public Maven repository, and you need not. This article shows you how to import a local Maven dependency.
Before we start, assume that you have already have a jar file,
coop-0.0.1.jar. Its group id, artifact id and version are
net.sunshire,
coop and
0.0.1, respectively. And your current project is
net.sunshire:farm:0.0.1, which is at
FARM_HOME=~/WorkSpace/farm.
First I recommend you to make a directory for your local library, named
LIB_SOURCE=$FARM_HOME/mvn-lib, and copy your dependency jar into there. Then you make another directory for local Maven repository, named
LOCAL_MVN=$FARM_HOME/local-maven-repo. So you are prepared, by executing the following, you are able to deploy the jar to your local Maven repository.
mvn deploy:deploy-file \
-Durl=file:///$LOCAL_MVN \
-Dfile=$LIB_SOURCE/coop-0.0.1.jar \
-Dpackaging=jar \
-DgroupId=net.sunshire \
-DartifactId=coop \
-Dversion=0.0.1
To verify if your deploy is successful, you may check the files under
$LOCAL_MVN/. There should be directories and jar named after your group id and artifact id.(e.g.
)
After you have successfully deployed your local dependency. You may add the following into your current project pom.xml.
<project ...>
...
<dependencies>
<dependency>
<groupId>net.sunshire</groupId>
<artifactId>coop</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>local-maven-repo</id>
<url>file:${project.basedir}/local-maven-repo</url>
</repository>
</repositories>
</project>
When you are finished, you are able to compile your project by executing
mvn scala:compile test.
Another worth mentioning thing, when you deploy the local repository with
mvn deploy:deploy-file ..., it also deploy a duplication to
~/.m2/. So I would recommend you change the version number of the dependency every time you made a change of it, otherwise Maven uses the cache in
~/.m2/ prior.