Create local maven repository

MavenMaven 2Mvn Repo

Maven Problem Overview


I want to create local maven repository. I did the following steps:

  1. Installed maven plugin in eclipse

  2. Created one folder localrepository in apache server which is accessible using http://< my-domain>/localrepository

  3. 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?

Maven Solutions


Solution 1 - Maven

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 - Maven

Yes you can! For a simple repository that only publish/retrieve artifacts, you can use nginx.

  1. Make sure nginx has http dav module enabled, it should, but nonetheless verify it.

  2. 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

  1. 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>

4. To publish artifacts use mvn deploy. To retrieve artifacts, maven will do it automatically.

And there you have it a simple maven repo.

Solution 3 - Maven

If maven is not creating Local Repository i.e .m2/repository folder then try below step.

In your Eclipse\Spring Tool Suite, Go to Window->preferences-> maven->user settings-> click on Restore Defaults-> Apply->Apply and close

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpbhleView Question on Stackoverflow
Solution 1 - MavenyankeeView Answer on Stackoverflow
Solution 2 - MavenlmiguelmhView Answer on Stackoverflow
Solution 3 - MavenLOKESH SView Answer on Stackoverflow