我有在 Maven 中央存储库中找不到的 jar 文件。我想添加 jar,这样我就可以在我的pom.xml
文件中包含额外的标签,其他开发人员可以使用该 jar。将 jar 上传到 http webserver webfolder 需要哪些步骤?我应该在旁边上传什么文件custom.jar
?web文件夹中还需要与哪些其他文件并排存在custom.jar
?
3 回答
如果您已经设置了指向 Web 文件夹的 Web 服务器,那么部署自定义 JAR 的一种简单方法是使用deploy:deploy-file
Mojo。如Maven 部署插件的使用页面中所述:
deploy:deploy-file
mojo 主要用于部署不是由 Maven 构建的工件。项目的开发团队可能会也可能不会为工件提供 POM,并且在某些情况下,您可能希望将工件部署到内部远程存储库。部署文件 mojo 提供了涵盖所有这些用例的功能,并为动态生成 POM 提供了广泛的可配置性。此外,您可以指定存储库使用的布局。部署文件 mojo 的完整使用说明可以描述为:mvn deploy:deploy-file -Durl=file://C:\m2-repo \ -DrepositoryId=some.id \ -Dfile=your-artifact-1.0.jar \ [-DpomFile=your-pom.xml] \ [-DgroupId=org.some.group] \ [-DartifactId=your-artifact] \ [-Dversion=1.0] \ [-Dpackaging=jar] \ [-Dclassifier=test] \ [-DgeneratePom=true] \ [-DgeneratePom.description="My Project Description"] \ [-DrepositoryLayout=legacy] \ [-DuniqueVersion=false]
只有前 3 个参数是强制性的(短版)。如果您想知道repositoryId是什么,Mojo 的文档说:
在大多数情况
<id>
下<server>
,settings.xml
需要此参数进行身份验证。默认值为:远程存储库。
换句话说,最简单的使用方法是在托管 Web 服务器的机器上复制您的自定义 JAR,并file://
在指定 URL 时使用协议。无需额外设置。如果您想远程部署,那么scp://
通常是首选协议(还有其他协议,但这个很容易设置)。下面是一个使用 scp 的示例:
mvn deploy:deploy-file -DgroupId=my.group -DartifactId=myartifact -Dversion=1.0 \
-DgeneratePom=true \
-Dpackaging=jar \
-Dfile=custom.jar \
-DrepositoryId=some.id \
-Durl=scp://REMOTEMACHINE/PATH/TO/WEB_ROOT/maven2_repository
实际上,使用 Web 服务器来托管您自己的 Maven 存储库是非常好的,但初始化可能会有点痛苦。解决此问题的一种解决方案是使用 Maven 代理(例如Nexus),而不仅仅是 Maven 存储库。但这超出了你的问题。
有关这方面的更多资源,请检查(即使实施解决方案有点过时,这些原则仍然有效):
最好,您需要一个本地 Maven 存储库。一种选择是Nexus
或者,如果您只是自己工作,您可以节省开销并将 jars 放在您机器上的存储库中 - 在home/.m2/repository
适当的文件夹中
Next 命令有助于将 jar 安装到本地存储库。在此之后,您可以将带有 jar 的文件夹从本地上传到远程存储库。
mvn install:install-file \
-DgroupId=com.name \
-DartifactId=aaaa-bc \
-Dversion=1.0 \
-Dpackaging=jar \
-Dfile=aaaa-bc.jar \
-DcreateChecksum=true