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>
Run Code Online (Sandbox Code Playgroud)
如果我不声明<snapshots>或怎么办<releases>?默认值是什么?它们似乎是可选的...
<releases>默认情况下在所有存储库上启用。我认为<snapshots>默认情况下是禁用的?那么上面的片段是多余的吗?
小智 8
TL;DR:是的,如果我们配置了快照,默认情况下会启用<repository>快照pom.xml
如果我们仔细考虑一下,即使我们没有在文件<repository>中指定任何内容pom.xml,Maven 也会从默认存储库下载工件。这是因为默认的“中央”存储库是在Super POM中配置的。
Super POM 页面摘录:
与面向对象编程中的对象继承类似,扩展父 POM 的 POM 会从该父 POM 继承某些值。此外,正如 Java 对象最终继承自 java.lang.Object 一样,所有项目对象模型都继承自基础 Super POM。下面的代码片段是 Maven 3.5.4 的 Super POM。
Run Code Online (Sandbox Code Playgroud)<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>但如果我们在 our 中指定pom.xml,则默认情况下snapshots是enabled。enabled您可以在此处找到默认值true:
话虽如此,我建议我们进行设置,以便其他开发人员能够“了解”为什么他们的snapshotJAR 文件没有从Artifactory下载。它提供了更多的清晰度,并且鉴于它除了在代码库中之外没有公开,因此它不会“伤害”任何人。
| 归档时间: |
|
| 查看次数: |
4273 次 |
| 最近记录: |