Maven 将工件上载到Nexus3

Maven 将工件上载到Nexus3,maven,gradle,nexus,Maven,Gradle,Nexus,我正在尝试将工件上传到Nexus3。我已经成功地做到了这一点,但是当我在UI中查看时,看起来事情没有正确地分组 我可以将curl或maven与以下配置和URL一起使用 uploadArchives { repositories { mavenDeployer { repository(url: "http://localhost:8081/repository/my-snapshot/") { authenticat

我正在尝试将工件上传到Nexus3。我已经成功地做到了这一点,但是当我在UI中查看时,看起来事情没有正确地分组

我可以将curl或maven与以下配置和URL一起使用

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "http://localhost:8081/repository/my-snapshot/") {
                authentication(userName: "admin", password: "admin123")
            }
            pom.version = "${version}-SNAPSHOT"
            pom.artifactId = "my-server"
            pom.groupId = "com.example"
        }
    }
}
但当我这样做时,工件并没有分组,因此我可以根据目录的版本删除它。我必须删除每个文件:


这是Nexus 3的一个限制吗?

还有一个“组件视图”,它将每个工件进行分组

但是,如果您正在查找有关如何基于人工制品id和版本删除组件的信息: 您可以通过NexusAPI实现它

阅读第16章,向您介绍脚本方式 这里的答案向您展示了如何在回购协议中列出所有人工制品。我在这里扩展了它:

import groovy.json.JsonOutput
import org.sonatype.nexus.repository.storage.Component
import org.sonatype.nexus.repository.storage.Query
import org.sonatype.nexus.repository.storage.StorageFacet

def repoName = "eddie-test"
def startDate = "2016/01/01"
def artifactName = "you-artifact-name"
def artifactVersion = "1.0.6"

log.info(" Attempting to delete for repository: ${repoName} as of startDate: ${startDate}")

def repo = repository.repositoryManager.get(repoName)
StorageFacet storageFacet = repo.facet(StorageFacet)
def tx = storageFacet.txSupplier().get()

tx.begin()

// build a query to return a list of components scoped by name and version
Iterable<Component> foundComponents = tx.findComponents(Query.builder().where('name = ').param(artifactName).and('version = ').param(artifactVersion).build(), [repo])

// extra logic for validation goes here
if (foundComponents.size() == 1) {
    tx.deleteComponent(foundComponents[0])
}

tx.commit()
log.info("done")
import groovy.json.JsonOutput
导入org.sonatype.nexus.repository.storage.Component
导入org.sonatype.nexus.repository.storage.Query
导入org.sonatype.nexus.repository.storage.StorageFacet
def repoName=“埃迪测试”
def startDate=“2016/01/01”
def artifactName=“您的工件名称”
def artifactVersion=“1.0.6”
log.info(“正在尝试删除自startDate:${startDate}起的存储库:${repoName}”)
def repo=repository.repositoryManager.get(repoName)
StorageFacet StorageFacet=repo.facet(StorageFacet)
def tx=storageFacet.txSupplier().get()
开始
//生成查询以返回按名称和版本划分范围的组件列表
Iterable foundComponents=tx.findComponents(Query.builder().where('name=')).param(artifactName.)和('version=').param(artifactVersion.build(),[repo])
//这里有额外的验证逻辑
if(foundComponents.size()==1){
tx.deleteComponent(foundComponents[0])
}
tx.commit()
log.info(“完成”)

您所说的“未分组”是什么意思?您的工件似乎位于0.10-SNAPSHOT目录中。我假设UI会对它们进行分组,以便列表中只有一个0.1.0-SNAPSHOT项目,因此我可以单击此项目删除该版本。答案来自