Java 安装POMs时设置本地存储库ID

Java 安装POMs时设置本地存储库ID,java,maven,pom.xml,Java,Maven,Pom.xml,我需要一个本地存储库,用于我的项目中的一个JAR文件,该文件无法通过Maven中央存储库获得。我使用mvn install:install file…按照安装JAR,使用-DlocalRepositoryPath指示Git存储库中的路径,并使用-DcreateChecksum创建校验和 这将安装JAR,生成POM,并为所有文件生成校验和。但有趣的是,它还在groupId目录中创建了一个maven metadata local.xml文件。根据我的推测,local是它给本地存储库的ID 但是在我的

我需要一个本地存储库,用于我的项目中的一个JAR文件,该文件无法通过Maven中央存储库获得。我使用
mvn install:install file…
按照安装JAR,使用
-DlocalRepositoryPath
指示Git存储库中的路径,并使用
-DcreateChecksum
创建校验和

这将安装JAR,生成POM,并为所有文件生成校验和。但有趣的是,它还在groupId目录中创建了一个
maven metadata local.xml
文件。根据我的推测,
local
是它给本地存储库的ID

但是在我的POM中(
mvn install:install file
无法知道),我使用ID
local repo
作为我的存储库:

<repositories>
  <repository>
    <id>local-repo</id>
    <url>file:///${project.basedir}/repo</url>
  </repository>
</repositories>

本地回购
文件://${project.basedir}/repo
当然,我可以将我的POM更改为仅使用
local
来匹配生成的文件,但我不喜欢在不理解为什么要这样做的情况下做。也许有人能告诉我:

  • 我是否需要
    maven元数据local.xml
    ?它有目的吗
  • local
    部件是否需要匹配我在POM中使用的存储库ID
  • mvn install:install file
    是否有一个参数允许我指示用于本地存储库的ID(例如生成
    maven metadata local repo.xml
    ,或者我必须在之后手动重命名该文件
我需要maven-metadata-local.xml吗?它有什么用途吗

取决于您想做什么,我建议您阅读本文以了解maven-metadata-local.xml的作用

本地部件是否需要匹配我在POM中使用的存储库ID

不,pom中声明的id仅用于在maven构建过程中进行日志记录,您将解释id的用法:

mvn install:install file是否有一个参数允许我指示本地存储库使用的ID(例如,生成maven-metadata-local-repo.xml,或者我必须在以后手动重命名该文件)

是,根据maven api指南:

我需要maven-metadata-local.xml吗?它有什么用途吗

是的,你需要它

该文件用于存储您在本地repo中安装的不同版本/版本的信息

例如,我在本地回购中安装了:

  • 首先,发布jar文件的0.2.0版
  • 第二,0.1.0-SNAPSHOT
maven metadata local.xml
会相应更新:

$ ls -l
drwxrwxr-x. 2 4096 Jun 21 16:14 0.1.0-SNAPSHOT
drwxrwxr-x. 2 4096 Jun 21 16:12 0.2.0
-rw-rw-r--. 1 349 Jun 21 16:14 maven-metadata-local.xml
-rw-rw-r--. 1 32 Jun 21 16:14 maven-metadata-local.xml.md5
-rw-rw-r--. 1 40 Jun 21 16:14 maven-metadata-local.xml.sha1
以便:

$ cat maven-metadata-local.xml
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
[...]
  <versioning>
    <release>0.2.0</release>
    <versions>
      <version>0.2.0</version>
      <version>0.1.0-SNAPSHOT</version>
    </versions>
    <lastUpdated>20180621151442</lastUpdated>
  </versioning>
</metadata>
mvn install:install file
是否有允许我指示的参数 用于本地存储库的ID(例如生成 maven-metadata-local-repo.xml,或者我必须手动重命名该文件吗 后来呢

不,您不需要重命名该文件。该“-local”后缀表示它拥有的元数据信息对于该repo是“local”的

为了更清楚地说明这一点,如中所述:

元数据文件名为:

  • maven metadata.xml
    在远程存储库中
  • maven metadata-.xml
    在本地存储库中,用于存储库中具有repo id标识符的元数据
因此,在进行“mvn安装”时,在使用的本地repo(
/m2/repository
文件夹下的默认文件或
-DlocalRepositoryPath
中给出的文件)上,创建的文件是
maven metadata local.xml
,因为它是本地存储库

类似地,在您的本地repo上,您可以看到不同的
maven metadata-.xml
,因此您可以看到工件来自哪个repo(例如,我的本地repo,其中我有一个settings.xml标识中心repo、共享发布repo、共享快照repo等

.m2/repository/org/apache/maven/plugins/maven install plugin/maven-metadata-central.xml
.m2/repository/[…]/maven metadata snapshots.xml

综上所述,

  • 只有一个本地回购,因此没有ID在“安装文件”中选择它
  • Repo ID用于您可能拥有的不同Repo(例如,一个用于名为“我的发布”的发布的Repo,另一个用于名为“我的快照”的快照的Repo)。在向其部署工件时使用该
    Repo ID

mvn部署-DaltDeploymentRepository=my repo::default::file:///home/jalopaba/my-repo

看看这个问题?这个问题是否说明了存储库ID?我建议安装一个存储库管理器并使用它…这将解决您的问题..但是谁说我有问题?我有一些问题。并且以太我有一个问题其中一个问题!你完全回避了这些问题。@GarretWilson根据你的帖子,你有你正在使用的jar,它们不在中心,你必须通过
mvn install:install file
…这是使用存储库的指标(不是唯一的指标)您奇怪的配置是使用基于文件的存储库…并将文件安装到git存储库…您的第三个答案是错误的。只有一个本地repo(从“远程repo”下载依赖项),因此没有用于选择本地回购的id。我的答案不是将元数据文件命名为使用自定义名称。但作为第2点中的答案,id作为唯一登录目的,回购是唯一的。。。
Downloading from this-is-my-local-repo: file:///...