В записи репозитория maven в pom включены ли снимки по умолчанию? - PullRequest
1 голос
/ 08 мая 2020

maven pom может определять «репозиторий», например:

  <repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

Что, если я не объявлю <snapshots> или <releases>, каковы значения по умолчанию? Они кажутся необязательными ...

Согласно https://blog.packagecloud.io/eng/2017/03/09/how-does-a-maven-repository-work/

<releases> включено по умолчанию во всех репозиториях. Полагаю, <snapshots> отключен по умолчанию? Значит, приведенный выше фрагмент лишний?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

РЕДАКТИРОВАТЬ: добавлено больше деталей, поскольку ответ немного сложен

TL; DR: Да, они включены по умолчанию, если мы настроим <repository> в pom.xml

Если подумать, даже если мы не укажем <repository> в нашем pom.xml файле, Maven загружает артефакты из репозитория по умолчанию. Это связано с тем, что по умолчанию «Центральный» репозиторий настроен в Super POM .

Выдержка со страницы Super POM:

Аналогично наследованию объектов в объектно-ориентированном программировании POM, расширяющие родительский POM, наследуют определенные значения от этого родителя. Более того, как Java объекты в конечном итоге наследуются от java .lang.Object, все объектные модели проекта наследуются от базовой Super POM. Приведенный ниже фрагмент представляет собой Super POM для Maven 3.5.4.

    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository> </repositories> ```

Из-за этой конфигурации snapshot загрузка "по умолчанию" только "из центрального репозитория maven" отключена.

Но если мы укажем <repository> в нашем pom.xml, то по умолчанию snapshots будут enabled. Вы можете найти значение по умолчанию enabled как true здесь:

enter image description here

С учетом всего сказанного, я рекомендую установить это так, чтобы другие разработчики «поймут», почему их snapshot jar не загружается из артефакта. Он обеспечивает большую ясность и, учитывая, что он не раскрывается кроме кодовой базы, он никому не «вредит».

1 голос
/ 08 мая 2020

В официальной документации не указываются явно какие-либо настройки по умолчанию: https://maven.apache.org/pom.html#Repositories

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

Так что, если вы хотите быть в безопасности, четко укажите, что вы хотите.

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