2016-11-28 121 views
1

我有一个使用pom.xml文件完美运行的maven项目来获取所需的jar文件。不幸的是,我连接的数据库在mvnrepository上没有任何jar文件。现在他们坐在Referenced Libraries文件夹中。Maven可以使用本地和远程存储库吗?

enter image description here

由于这些文件是专有的,我需要让他们地方。我建立了Apache Archiva并添加了这些文件。

我可以让我的项目pom文件引用远程存储库和本地存储库吗?

回答

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

这是如何解决OP的问题的?他的问题是第三方jar甚至不存在于任何仓库(本地或远程)中。 – manouti

2

我能得到我的项目POM文件同时引用远程仓库和本地仓库?

这就是Maven的工作原理。首先在本地存储库中查找依赖关系,如果不存在,则将它们从远程存储库下载到本地存储库。在这种情况下,您的第三方Jars需要安装在本地存储库中,或者更好地部署到远程存储库,以便其他开发人员可以使用它们。

  1. 理想你将部署使用一个仓库管理像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存储库获取依赖关系。

  2. 您还可以通过运行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。缺点是其他开发人员必须执行此步骤才能构建其项目。

相关问题