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

我想创建本地 Maven 存储库。我做了以下步骤:

  1. 在eclipse中安装了maven插件
  2. 在 apache 服务器中创建了一个文件夹 localrepository,可以使用 http:///localrepository 访问
  3. 在我提供的项目 pom.xml 中

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

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

是否需要提供仓库?

【问题讨论】:

    标签: maven maven-2 mvn-repo


    【解决方案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。

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

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

      3. 在您项目的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>
        
      4. 要发布工件,请使用 mvn deploy。要检索工件,maven 会自动完成。

      你有一个简单的 maven repo。

      【讨论】:

      • sudo chmod +777 是这里的最佳选择吗? +664 将匹配 user:rw group:rw all:r
      • 你说得对,这里应该应用最小权限原则。
      猜你喜欢
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 2016-11-13
      • 2015-10-19
      • 1970-01-01
      • 2011-02-23
      • 2015-08-19
      • 2014-09-28
      相关资源
      最近更新 更多