我有一个使用pom.xml文件完美运行的maven项目来获取所需的jar文件。不幸的是,我连接的数据库在mvnrepository上没有任何jar文件。现在他们正坐在Referenced Libraries文件夹中。
由于这些文件是专有的,我需要将它们保留在本地。我已经设置了Apache Archiva并添加了文件。
我可以让我的项目pom文件引用远程存储库和本地存储库吗?
答案 0 :(得分:2)
是的,你可以这样:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository/>
<interactiveMode/>
<usePluginRegistry/>
<offline/>
<pluginGroups/>
<servers/>
<mirrors/>
<proxies/>
<profiles/>
<activeProfiles/>
</settings>
有关详细信息,请查看here。
您还可以查看此article。
通过以下配置,您可以实现它:
<localRepository>/dev/m2repo</localRepository>
答案 1 :(得分:2)
我可以让我的项目pom文件引用远程存储库和本地存储库吗?
Maven已经如何运作了。首先在本地存储库中查找依赖关系,如果不存在,则将它们从远程存储库下载到本地存储库。在这种情况下,您的第三方Jars需要安装在本地存储库中,或者更好地部署到远程存储库,以便其他开发人员可以使用它们。
理想情况您将使用Sonatype Nexus等存储库管理器将这些第三方库部署到远程存储库。如果您使用的是Nexus存储库管理器,请参阅https://books.sonatype.com/nexus-book/reference/using-sect-uploading.html了解如何执行此操作。这将适用于您的确切方案,因为链接页面描述:
当您的构建使用公共存储库中不可用的专有或自定义依赖项时,您通常需要找到一种方法,使其可以在自定义Maven存储库中供开发人员使用。 Nexus Repository Manager Pro和Nexus Repository Manager OSS附带预先配置的第三方存储库,旨在保存构建中使用的第三方依赖项。
这也可以使用maven-deploy-plugin完成,但要求您在pom.xml中配置目标存储库,如文档中所述。
修改强>
您提到使用Apache Archiva,它也是一个存储库管理器,允许您将工件部署到其存储库。 https://archiva.apache.org/docs/2.2.1/userguide/deploy.html解释了如何做到这一点。 https://archiva.apache.org/docs/2.2.1/userguide/using-repository.html解释了如何配置Maven以从Archiva存储库获取依赖关系。
您还可以通过运行maven-install-plugin
来将库仅安装到本地存储库:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \ -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
见https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html。缺点是其他开发人员必须执行此步骤才能构建他们的项目。