Create local maven repository
I want to create local maven repository. I did the following steps:
- Installed maven plugin in eclipse
- Created one folder localrepository in apache server which is accessible using http://< my-domain>/localrepository
-
In my project pom.xml I have provided
<repositories> <repository> <id>repository</id> <url>http://<my-domain>/localMavenRepository</url> </repository> </repositories>
But it is not resolving the jars which are on http://< my-domain>/localMavenRepository
Is there any need to provide repository?
Solution 1:
Set up a simple repository using a web server with its default configuration. The key is the directory structure. The documentation does not mention it explicitly, but it is the same structure as a local repository.
To set up an internal repository just requires that you have a place to put it, and then start copying required artifacts there using the same layout as in a remote repository such as repo.maven.apache.org. Source
Add a file to your repository like this:
mvn install:install-file \
-Dfile=YOUR_JAR.jar -DgroupId=YOUR_GROUP_ID
-DartifactId=YOUR_ARTIFACT_ID -Dversion=YOUR_VERSION \
-Dpackaging=jar \
-DlocalRepositoryPath=/var/www/html/mavenRepository
If your domain is example.com
and the root directory of the web server is located at /var/www/html/
, then maven can find "YOUR_JAR.jar" if configured with <url>http://example.com/mavenRepository</url>
.
Solution 2:
Yes you can! For a simple repository that only publish/retrieve artifacts, you can use nginx.
Make sure nginx has http dav module enabled, it should, but nonetheless verify it.
-
Configure nginx http dav module:
In Windows: d:\servers\nginx\nginx.conf
location / { # maven repository dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:r; }
In Linux (Ubuntu): /etc/nginx/sites-available/default
location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # try_files $uri $uri/ =404; # IMPORTANT comment this dav_methods PUT DELETE MKCOL COPY MOVE; create_full_put_path on; dav_access user:rw group:rw all:r; }
Don't forget to give permissions to the directory where the repo will be located:
sudo chmod +777 /var/www/html/repository
-
In your project's
pom.xml
add the respective configuration:Retrieve artifacts:
<repositories> <repository> <id>repository</id> <url>http://<your.ip.or.hostname>/repository</url> </repository> </repositories>
Publish artifacts:
<build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-http</artifactId> <version>3.2.0</version> </extension> </extensions> </build> <distributionManagement> <repository> <id>repository</id> <url>http://<your.ip.or.hostname>/repository</url> </repository> </distributionManagement>
To publish artifacts use
mvn deploy
. To retrieve artifacts, maven will do it automatically.
And there you have it a simple maven repo.