有没有办法让Maven自动下载快照版本?

2022-09-02 05:09:42

因此,我有一个项目依赖于另一个项目的快照版本。依赖关系是:

<dependency>
  <groupId>org.oop</groupId>
  <artifactId>oop</artifactId>
  <version>0.9.9-SNAPSHOT</version>
</dependency>

对于oop项目,我确实做了一个“mvn clean deploy”,所以快照版本应该在maven中央存储库中的某个地方。但是当我进行mvn全新安装时,上面的快照依赖关系无法解决,我得到这个:

失踪:

1) org.oop:oop:jar:0.9.9-SNAPSHOT

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

然后,使用以下命令安装它:mvn install:install-file -DgroupId=org.oop -DartifactId=oop -Dversion=0.9.9-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

或者,如果您托管自己的存储库,则可以将文件部署到那里:mvn deploy:deploy-file -DgroupId=org.oop -DartifactId=oop -Dversion=0.9.9-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

有没有办法让maven自动下载快照?我一定错过了一些东西。

编辑1:在我的设置中.xml我有:

   <server>
      <id>sonatype-nexus-snapshots</id>
      <username>XXXXXX</username>
      <password>XXXXXX</password>
    </server>

    <server>
      <id>sonatype-nexus-staging</id>
      <username>XXXXXX</username>
      <password>XXXXXX</password>
    </server>

编辑2:enter image description here


答案 1

只需将其添加到 ~/.m2/设置中.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>

答案 2

要更新快照,请尝试使用 -U 选项

-U,--update-snapshots                  Forces a check for updated
                                       releases and snapshots on remote
                                       repositories

但是,你说:

我确实做了一个“mvn clean deploy”,所以快照版本应该在maven中央存储库中的某个地方。

这是不可能的,您的快照将转到其他地方。如果我在没有配置个人存储库的情况下执行 a 操作,我会得到:mvn clean deploy

部署失败:存储库元素未在 POM 内部分发管理元素或 -DaltDeploymentRepository=id::layout::url 参数中指定

要启用部署,需要向 pom.xml 添加一些配置,例如:

<distributionManagement>

    <!-- Publish versioned releases here -->
    <repository>
        <id>myrepo</id>
        <name>My releases</name>
        <url>http://nexus.mycompany.com/nexus/content/repositories/releases</url>
    </repository>

    <!-- Publish snapshots here -->
    <snapshotRepository>
        <id>myrepo</id>
        <name>my snapshots</name>
        <url>http://nexus.mycompany.com/nexus/content/repositories/snapshots</url>
    </snapshotRepository>

</distributionManagement>

<repositories>
    <repository>
        <id>myrepo</id>
        <name>My Public Repository</name>
        <url>http://nexus.mycompany.com/nexus/content/groups/public</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

推荐