Установка идентификатора локального хранилища при установке POM - PullRequest
0 голосов
/ 11 июня 2018

Мне нужен локальный репозиторий для моего проекта для файла JAR, недоступного через репозиторий Maven Central.Я устанавливаю JAR, используя mvn install:install-file … согласно http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html,, используя -DlocalRepositoryPath, чтобы указать путь в моем Git-репозитории, и используя -DcreateChecksum для создания контрольных сумм.

Это устанавливает JAR, генерируетPOM и генерирует контрольные суммы для всех файлов.Но что интересно, он также создает файл maven-metadata-local.xml в каталоге groupId.Начиная с http://maven.apache.org/ref/3.2.5/maven-repository-metadata/ я понимаю, что local - это идентификатор, который он дает локальному хранилищу.

Но в моем ПОМ (mvn install:install-file не было никакой возможности узнать) я использую идентификатор local-repoдля моего репозитория:

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

Конечно, я мог бы изменить свой POM, чтобы использовать просто <id>local</id> для сопоставления сгенерированных файлов, но я не люблю делать вещи, не понимая, почему я это делаю.Так что, может быть, кто-то может сказать мне:

  • Нужен ли мне maven-metadata-local.xml?Служит ли это для какой-либо цели?
  • Нужно ли детали local соответствовать идентификатору репозитория, который я использую в POM?
  • Имеет ли параметр mvn install:install-file параметр, позволяющий мне указать идентификаториспользовать для локального хранилища (например, для генерации maven-metadata-local-repo.xml, или я должен впоследствии переименовать файл вручную?

Ответы [ 2 ]

0 голосов
/ 21 июня 2018

Нужен ли мне файл maven-metadata-local.xml?Служит ли это для какой-либо цели?

Да, вам это нужно.

Это файл, созданный для хранения информации о различных версиях / выпусках, которые вы установили в этом локальном репо.

Например, я установил в локальном репо:

  • Во-первых, выпуск 0.2.0 файла jar.
  • Во-вторых, 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>

Нужна ли локальная частьсоответствовать идентификатору хранилища, который я использую в POM?

Нет.Он предназначен для ведения журналов (конечно, вам нужен URL-адрес действительного репо).

Downloading from this-is-my-local-repo: file:///...

Имеет ли mvn install:install-file параметр, позволяющий указать идентификатор для использования в локальном репозитории(например, чтобы сгенерировать maven-metadata-local-repo.xml или я должен впоследствии переименовать файл?

Нет, вам не нужно переименовывать файл. Этот суффикс "-local"означает, что информация метаданных, которую он имеет, является «локальной» для этого репо.

Просто чтобы сделать это более понятным, как объяснено в http://maven.apache.org/ref/3.5.2/maven-repository-metadata/:

Имя файла метаданных:

  • maven-metadata.xml в удаленном хранилище,
  • maven-metadata-<repo-id>.xml в локальном хранилище, для метаданных из хранилища с идентификатором репоидентификатор.

Таким образом, при выполнении установки "mvn" в локальном репо (по умолчанию в папке ./m2/repository или в папке -DlocalRepositoryPath), файл создаетсяmaven-metadata-local.xml, так как это локальный репозиторий.

Аналогично, в вашем локальном репо вы можете увидеть разные maven-metadata-<repo-id>.xml, так что вы можетесм. , в котором репо артефакт взят из (пример из моего локального репо, где у меня есть файл settings.xml, идентифицирующий центральное репо, репозиторий общего релиза, репозиторий общих снимков и т. д. ...

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

Подводя итог,

  • Существует ТОЛЬКО ОДИН локальный репозиторий, поэтому нет идентификатора для его выбора в "install-file".
  • ID репо предназначен для различных репо, которые могут быть у вас (например, репо для выпусков с именем «my-Releases», другое для моментальных снимков с именем «my snapshots»).repo-id используется при развертывании на нем артефакта:

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

0 голосов
/ 16 июня 2018

Нужен ли мне файл maven-metadata-local.xml?Это служит цели?

Зависит от того, что вы хотите сделать, я предлагаю вам прочитать это, чтобы понять роль maven-metadata-local.xml

http://maven.apache.org/ref/3.2.5/maven-repository-metadata/

Должна ли локальная часть соответствовать идентификатору хранилища, который я использую в POM?

Нет, идентификатор, объявленный в pom, предназначен только для целей входа в систему во время сборки maven, этотобъясните ли вы использование идентификатора:

https://maven.apache.org/guides/introduction/introduction-to-repositories.html

Есть ли у mvn install: install-file параметр, позволяющий указать идентификатор для использования в локальном репозитории (например, чтобы сгенерировать maven-metadata-local-repo.xml, или я должен впоследствии вручную переименовать файл?

да в соответствии с руководством maven api здесь:

https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...