如何从Maven SNAPSHOT仓库下载SNAPSHOT版本?

52

我有一个项目并且我可以正常将其发布到Maven,但现在我想提供该项目的快照版本。因此,我执行 'mvn clean deploy'。如下所示,一切都很顺利:

[INFO] Retrieving previous build number from sonatype-nexus-snapshots Uploading: https://oss.sonatype.org/content/repositories/snapshots/me/soliveirajr/menta-regex/0.9.6-SNAPSHOT/menta-regex-0.9.6-20111010.153035-2.jar 5K uploaded (menta-regex-0.9.6-20111010.153035-2.jar)

我打开sonatype管理器,可以找到这个快照:enter image description hereenter image description here

但是,当我尝试在另一台机器上的某个其他项目中使用此快照作为依赖项时,我会得到以下错误提示:

<dependency>
  <groupId>me.soliveirajr</groupId>
  <artifactId>menta-regex</artifactId>
  <version>0.9.6-SNAPSHOT</version>
</dependency>

缺失:

1) me.soliveirajr:menta-regex:jar:0.9.6-SNAPSHOT

尝试从项目网站手动下载文件。

然后,使用以下命令进行安装: mvn install:install-file -DgroupId=me.soliveirajr -DartifactId=menta-regex -Dversion=0.9.6-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

或者,如果您有自己的存储库,您可以将文件部署到那里: mvn deploy:deploy-file -DgroupId=me.soliveirajr -DartifactId=menta-regex -Dversion=0.9.6-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

那么如何强制Maven将SNAPSHOT版本下载到本地(.m2)存储库中呢?

3个回答

76

只需将以下内容添加到您的~/.m2/settings.xml文件中:

<profiles>
  <profile>
     <id>allow-snapshots</id>
        <activation><activeByDefault>true</activeByDefault></activation>
     <repositories>
       <repository>
         <id>snapshots-repo</id>
         <url>https://oss.sonatype.org/content/repositories/snapshots</url>
         <releases><enabled>false</enabled></releases>
         <snapshots><enabled>true</enabled></snapshots>
       </repository>
     </repositories>
   </profile>
</profiles>

4
请注意,如果您正在寻找最新的JaCoCo快照,请不要像我一样复制此示例。因为它是一个插件,而且它们有不同的库。请参阅此答案:https://dev59.com/IqXja4cB1Zd3GeqPXtwp#46682942。 - BitfulByte

34

为了完整起见,我想补充一下,通过修改项目的pom.xml,也可以简单地添加。

 <repositories>
    <repository>
      <id>oss.sonatype.org-snapshot</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

将其添加到您的存储库列表中。

在我看来,这比修改~/.m2/settings.xml文件是一个更好的解决方案。通过Git,pom.xml文件也可供其他项目参与者使用,并允许他们下载快照。

来源:这个答案


3
这非常有帮助。对于那些没有 <repositories> 部分的人,你需要在代码块的开头加上一个标签,并且它与 properties 和 dependencies 处于同一级别。 - Doug Noel
谢谢,已添加缺失的起始标签! - Thomas Kainrad
1
这是如何使用常规依赖和插件的SNAPSHOT构件的示例 https://github.com/checkstyle/checkstyle/wiki/How-to-use-Checkstyle-snapshot-artifacts - Roman Ivanov
可以在仓库中使用 settings.xml 吗?这样,Git 用户就可以获取它了。 - khatchad

1

您可以在仓库配置文件(~/.m2/settings.xml)中启用快照:

<settings>
    <profiles>
        <profile>
          <repositories>
            <repository>
              <snapshots>                  <<<<<<<<<<<
                <enabled>true</enabled>    << ADD THIS
              </snapshots>                 <<<<<<<<<<<
  . . .
</settings>

请访问maven.apache.org/settings.html#Repositories获取更多属性信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接