创建本地 Maven 存储库

Posted

技术标签:

【中文标题】创建本地 Maven 存储库【英文标题】:Create local maven repository 【发布时间】:2012-11-29 19:48:47 【问题描述】:

我想。我做了以下步骤:

    在eclipse中安装了maven插件 在 apache 服务器中创建了一个文件夹 localrepository,可以使用 http:///localrepository 访问

    在我提供的项目 pom.xml 中

    <repositories>
        <repository>
            <id>repository</id>
            <url>http://<my-domain>/localMavenRepository</url>
        </repository>
    </repositories>
    

但它没有解析 http:///localMavenRepository 上的 jars

是否需要提供仓库?

【问题讨论】:

【参考方案1】:

使用具有默认配置的 Web 服务器设置一个简单的存储库。关键是目录结构。文档没有明确提及,但它与本地存储库的结构相同。

要建立一个内部存储库,只需要您有一个放置它的地方,然后使用与远程存储库(如 repo.maven.apache.org)中相同的布局开始复制所需的工件。 Source

像这样将文件添加到您的存储库:

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

如果您的域是example.com,并且Web服务器的根目录位于/var/www/html/,那么如果配置了&lt;url&gt;http://example.com/mavenRepository&lt;/url&gt;,maven可以找到“YOUR_JAR.jar”。

【讨论】:

谢谢,我真的不想设置一个功能齐全的存储库管理器来运行一个只读私有镜像,该镜像托管一小组永远不会改变的工件。【参考方案2】:

如果 maven 没有创建 Local Repository 即 .m2/repository 文件夹,请尝试以下步骤。

在您的 Eclipse\Spring Tool Suite 中,转到 Window->preferences-> maven->user settings-> 点击 Restore Defaults-> Apply->Apply and close

【讨论】:

【参考方案3】:

是的,你可以!对于仅发布/检索工件的简单存储库,您可以使用 nginx

    确保nginx has http dav module enabled,它应该,但仍然要验证它。

    Configure nginx http dav module:

    在 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;
    
    

    在 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;
    
    

    不要忘记授予 repo 所在目录的权限:

    sudo chmod +777 /var/www/html/repository

    在您项目的pom.xml 中添加相应的配置:

    检索工件:

    <repositories>
        <repository>
            <id>repository</id>
            <url>http://<your.ip.or.hostname>/repository</url>
        </repository>
    </repositories>
    

    发布工件:

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

    要发布工件,请使用 mvn deploy。要检索工件,maven 会自动完成。

你有一个简单的 maven repo。

【讨论】:

sudo chmod +777 是这里的最佳选择吗? +664 将匹配 user:rw group:rw all:r 你说得对,这里应该应用最小权限原则。

以上是关于创建本地 Maven 存储库的主要内容,如果未能解决你的问题,请参考以下文章

Maven存储库

如何让 Grails 从 Maven 存储库中获取最新的本地 jars?

使用 Gradle 和 Spring Boot 时无法发布到本地 maven 存储库

本地存储库的好常春藤教程? [关闭]

maven仓库介绍

Maven中的仓库