创建本地 Maven 存储库
Posted
技术标签:
【中文标题】创建本地 Maven 存储库【英文标题】:Create local maven repository 【发布时间】:2012-11-29 19:48:47 【问题描述】:我想。我做了以下步骤:
-
在eclipse中安装了maven插件
在 apache 服务器中创建了一个文件夹 localrepository,可以使用 http://
在我提供的项目 pom.xml 中
<repositories>
<repository>
<id>repository</id>
<url>http://<my-domain>/localMavenRepository</url>
</repository>
</repositories>
但它没有解析 http://
是否需要提供仓库?
【问题讨论】:
【参考方案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/
,那么如果配置了<url>http://example.com/mavenRepository</url>
,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 存储库的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Grails 从 Maven 存储库中获取最新的本地 jars?