maven可以同时使用本地和远程存储库吗?

时间:2016-11-28 19:19:59

标签: java maven

我有一个使用pom.xml文件完美运行的maven项目来获取所需的jar文件。不幸的是,我连接的数据库在mvnrepository上没有任何jar文件。现在他们正坐在Referenced Libraries文件夹中。

enter image description here

由于这些文件是专有的,我需要将它们保留在本地。我已经设置了Apache Archiva并添加了文件。

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

2 个答案:

答案 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需要安装在本地存储库中,或者更好地部署到远程存储库,以便其他开发人员可以使用它们。

  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。缺点是其他开发人员必须执行此步骤才能构建他们的项目。