maven 3 SNAPSHOTS未部署到正确的位置

时间:2018-03-18 08:03:47

标签: maven maven-deploy-plugin

我正在使用maven 3和nexus将我们的工件部署到存储库,

我看到maven 3中不推荐使用非唯一选项,因此所有SNAPSHOTS工件都使用时间戳进行部署,我很酷,问题是看起来所有工件都不在我指定的版本之下( 0.6-SNAPSHOT)所以当我试图获得这种依赖时,构建失败,因为它无法找到它。

这是pom中的依赖项定义:

<dependency>
    <groupId>com.globals</groupId>
    <artifactId>globals-general</artifactId>
    <version>0.6-SNAPSHO</version>
</dependency>

这是我尝试获取依赖项时遇到的错误:

Failed to execute goal on project mprest-mgrid-infra-cache: Could not resolve dependencies for project com.mprest.mgrid.infra:mprest-mgrid-infra-cache:jar:0.6-SNAPSHOT: Could not find artifact com.mprest.mgrid.globals:mprest-mgrid-globals-general:jar:0.6-SNAPSHOT ->

这是我的pom相关部分:

<distributionManagement>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>http://nexus:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
    <repository>
        <id>nexus-releases</id>
        <url>http://nexus:8081/repository/maven-releases/</url>
    </repository>
</distributionManagement>

这就是结构:

enter image description here

2 个答案:

答案 0 :(得分:0)

结构还可以, 0.6-SNAPSHOT下有所有带时间戳的0.6-SNAPSHOT, 和maven-metadata.xml指向最新的工件。

事实证明我需要在settings.xml中以某种方式添加存储库,以便我能够获取工件。

这就是它的样子:

 <servers>
    <server>
     <id>nexus-snapshots</id>
   </server>
   <server>
     <id>nexus-releases</id>
   </server>
     <server>
     <id>maven-group</id>
   </server>
 </servers>

 <mirrors>
   <mirror>
     <id>maven-group</id>
     <name>maven-group</name>
     <url>http://nexus:8081/repository/maven-group/</url>
     <mirrorOf>*</mirrorOf>
   </mirror>
 </mirrors>

 <profiles>
  <profile>
     <id>allow-snapshots</id>
        <activation><activeByDefault>true</activeByDefault></activation>
     <repositories>
       <repository>
         <id>nexus-snapshots</id>
         <url>http://nexus:8081/repository/maven-snapshots/</url>
         <releases><enabled>false</enabled></releases>
         <snapshots><enabled>true</enabled></snapshots>
       </repository>

       <repository>
         <id>nexus-releases</id>
         <url>http://nexus:8081/repository/maven-releases/</url>
         <releases><enabled>true</enabled></releases>
         <snapshots><enabled>false</enabled></snapshots>
       </repository>
     </repositories>
   </profile>
</profiles>

</settings>

答案 1 :(得分:0)

在最新版本的Nexus API中记录了如何检索组件的最新版本,并按存储库,组,工件和基本版本进行过滤

示例: http:// localhost:8081 / service / rest / v1 / search / assets / download?sort = version&repository = maven-snapshots&maven.groupId = org.foo.bar&maven.artifactId = project&maven.baseVersion = 1.2.3-SNAPSHOT&maven.extension =罐子

参考文档: https://help.sonatype.com/repomanager3/rest-and-integration-api/search-api#SearchAPI-SearchComponents

也许您需要先下载所需的jar,然后再运行Maven目标