当前位置: 首页 > 知识库问答 >
问题:

Maven设置中的镜像是什么。xml文件?

那博瀚
2023-03-14

如果我错了,请纠正我,但镜像用于将所有流量重定向到特定的存储库URL,并阻止其他所有内容(包括Maven central repo)。

现在,如果我有一个镜像来<代码>http://a.com:8081和存储库http://b.com:8081。第二个URL会被使用吗?我想答案是否定的。你能有多个镜子吗?

共有2个答案

归翔
2023-03-14

回答您的问题:

如果我错了,请纠正我,但镜像用于将所有流量重定向到特定的存储库URL,并阻止其他所有内容(包括Maven central repo)。

有点对,但我要说的是,所有的工件都被重定向到镜像。

阻塞不会发生,因为它是镜像。过滤或重定向是根据中定义的内容进行的

但是,如果您将镜像模式定义为:

现在如果我有一面镜子http://a.com:8081和存储库http://b.com:8081.第二个URL会被使用吗?我想答案是否定的。

这一切都取决于您如何定义镜像和存储库,如上所述,它们都可以使用。

你能有多个镜子吗?

是的。专家医生在这里解释了如何做到这一点:https://maven.apache.org/guides/mini/guide-mirror-settings.html#advanced-mirror-specification

但我个人从来没有需要处理多个镜像。相反,我通常有一个镜像,然后有一个或多个回购。接下来我会解释。

在这个例子中,我有:

>

  • 我虚构的公司Acme的Maven Central(称为acme-Central)的一个公共镜像。

    我的公司在当地开发的一种回购(称为acme回购)。

    第三方公司的一次回购-第三方回购,其中有一些我需要的工件(称为第三方回购)。

    所有这些的简化语法如下所示。我只展示了影响这个例子的一些配置。

    <settings>
        <mirrors>
          <mirror>
        <mirrorOf>central,!acme-repo,!third-party-repo</mirrorOf>
    
        <profiles>
            <profile>
            <id>default</id>
            <repositories>
                <repository>
                    <id>acme-repo</id>
                    <url>https://acme.com/repository/releases</url>
    
                <repository>
                    <id>third-party-repo</id>
                    <url>https://third-party.com/repository/releases</url>
    
        <activeProfiles>
          <activeProfile>default</activeProfile>
    

    我们有一个镜像(maven central)和另外两个存储库。镜像声明表示使用镜像而不是maven central,但不适用于两种回购协议,即acme回购协议和第三方回购协议。

    配置文件是必需的(因为这是settings.xml文件的语法)。您只能定义<代码>

    存储库有名称,查找工件的方式如下(请参阅Maven文档中的存储库顺序)。以下内容对此答案进行了简化。

    1. 设置。使用xml文件

    在从存储库下载之前,会应用镜像配置。maven文档显示了一个带有两个示例

    运行命令mvn help:effective-pom-Dverbose是查看使用哪个repo/mirror下载工件的好方法,因为语法是:

    Downloading from third-party-repo: https://third-party.com/...
    Downloading from acme-repo: https://third-party.com/...
    
    

  • 段干宏硕
    2023-03-14

    如果我错了,请纠正我,但镜像用于将所有流量重定向到特定的存储库URL,并阻止其他所有内容(包括Maven central repo)。

    这并不完全正确。Maven通过在定义的存储库中搜索工件来下载工件。这些存储库在项目的POM或Maven设置中定义。但是,如镜像文档中所述:

    但是,您可能希望在不更改项目文件的情况下为特定存储库使用替代镜像。

    让我们以文档中的示例为例,并对其进行评论:

    <mirrors>
      <mirror>
        <id>UK</id>
        <name>UK Central</name>
        <url>http://uk.maven.org/maven2</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
    </mirrors>
    

    这定义了一个镜像,当Maven想要从Maven Central存储库获取依赖项时将使用它。假设您有2个当前存储库,它们是Maven Central和一个自定义存储库A。发生的情况如下:

    1. 您正在声明对工件的依赖关系
    2. Maven将在您定义的存储库中查找该依赖关系,因此它将在存储库A和Maven Central中查找该依赖关系
    3. 假设它以A开头:它将命中为该存储库定义的URL,正如您所期望的那样。那么假设在那里没有找到它
    4. 然后它将查看Maven Central内部。然而,Maven会注意到为该存储库配置了镜像。它不会击中位于repo1.Maven.org的Maven Central。相反,它将从uk.maven获取它。org,它是在镜像配置元素中定义的URL

    如本例所示,镜像仅适用于某些存储库,这些存储库由定义

    例子:

    • *=一切
    • external:=所有内容都不在本地主机上,也不基于文件
    • 回购,repo1=回购或repo1
    • <代码>*,!repo1=除repo1之外的所有内容:

    现在,如果我有一个镜像来<代码>http://a.com:8081和存储库http://b.com:8081。第二个URL会被使用吗?我想答案是否定的。

    以上表明,答案并非完全是否定的。镜像到<代码>http://a.com:8081当Maven尝试从其镜像的存储库之一获取依赖项时,将使用。如果它确实将存储库镜像到<代码>http://b.com:8081http://b.com:8081(它们将被重定向到http://a.com:8081 );但如果没有,Maven将继续从<代码>http://b.com:8081像往常一样。

    你能有多个镜子吗?

    是的,你可以。

     类似资料:
    • 镜像是指云服务器实例可选择的运行环境模板,一般包括操作系统和预装的软件。镜像可以仅包含基本的操作系统,也可以在此基础上整合具体的软件环境。用户基于镜像来创建ECS实例,从而获得与镜像一致的系统环境。阿里云镜像市场提供服务商制作的镜像,这些镜像在操作系统上整合了具体的软件环境和功能,比如PHP运行环境、控制面板等,供有相关需求的用户开通实例时选用。 以往,用户购买云服务器后,需自行配置环境、安装软件

    • 主要内容:使用镜像代替中央仓库,镜像与 Maven 私服配合使用如果一个仓库 A 可以提供另一个仓库 B 的所有内容,那么就可以认为仓库 A 是仓库 B 的一个镜像。即仓库 B 中的任何一个构件都能从它的镜像中获取。 使用镜像代替中央仓库 国内开发人员由于网络原因,直接从中央仓库下载构件时,速度较慢或不稳定,我们通常会使用中央仓库的国内镜像站来解决该问题。 配置 Maven 镜像的方法也非常的简单,我们只需要在 Maven 安装目录中 setting.xml

    • 在我的“注释”下的引用中,Google说:“managed configurations ;bundle ;包含一个由managed configurations Provider显式设置的每个配置的条目。但是,不能因为在managed configurations XML文件中定义了默认值就假定配置将存在于bundle中。” 我理解,如果一个项目没有被托管配置提供程序显式设置,那么该项目将不在包

    • BIOS是英文Basic Input/Output System(基本输入/输出系统)的缩写,其程序储存在主板上的EPROM或Flash ROM内,作用是测试装在主板上的部件能否正常工作,并提供驱动程序接口,设定系统相关配备的组态。当你的系统配件与原CMOS参数不符合时,或CMOS参数遗失时,或系统不稳定时,就需要进入BIOS设定程序,以重新配置正确的系统组态。 进入AMI BIOS设定程序 1.

    • 我们所使用的计算机都是由一些硬件设备组成的,而这些硬件设备会由于用户的不同需要而在品牌、类型、性能上有很大差异。例如,对于硬盘,就可能存在容量大小和接口类型等方面的不同,而不同的硬件配置所对应的参数也不同,因此,我们在使用计算机之前,一定要确定它的硬件配置和参数,并将它们记录下来,存入计算机,以便计算机启动时能够读取这些设置,保证系统正常运行。 通常情况下,我们通过设置程序对硬件系统设置参数。由于

    • 我有一个Maven目录;看起来是这样的: 我想使用这些属性两次 一旦进入Maven的阶段,就可以设置并拆除我的数据库。使用Maven过滤,这是完美的工作 第二次是在运行Spring应用程序时,这意味着我需要将这些属性替换到我的文件。有关,例如,这样做很好。我不知道如何将我的数据库用户名和(解密的)密码替换到Spring文件 我的文件看起来像: 这里的最终目标是让每个开发人员拥有自己的Maven设置