我的问题是关于将工件保存到存储库中。尤其是,我正在尝试执行Maven项目的构建管道(通过Jenkins)后,将其上传到Nexus Repository工件中并发布版本。
我唯一要这样做的方法就是使用Groovy编写的管道来与Jenkins集成。
注意:我希望工件的版本号始终保持相同,并且版本号要动态地更改(而不是手动更改)。
一般是否有命令或代码可以使我做到这一点?
答案 0 :(得分:3)
您的级别错误,这应该在Maven中发生。 在pom.xml中,您需要。 (more here)
<distributionManagement>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
,然后在“插件”部分
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
,您应该只需要从管道中执行mvn clean deploy
。
编辑 Nexus Artifact Uploader plugin
还有另一种方法 nexusArtifactUploader {
nexusVersion('nexus2')
protocol('http')
nexusUrl('localhost:8080/nexus')
groupId('sp.sd')
version("2.4.${env.BUILD_NUMBER}")
repository('NexusArtifactUploader')
credentialsId('44620c50-1589-4617-a677-7563985e46e1')
artifact {
artifactId('nexus-artifact-uploader')
type('jar')
classifier('debug')
file('nexus-artifact-uploader.jar')
}
artifact {
artifactId('nexus-artifact-uploader')
type('hpi')
classifier('debug')
file('nexus-artifact-uploader.hpi')
}
}
答案 1 :(得分:2)
还可以使用的其他解决方案
我手动执行了该命令,并导出了Nexus通话的结果。结果是以下命令。此命令需要作为Groovy代码插入Jenkins管道内:
nexusPublisher nexusInstanceId: 'nexus', nexusRepositoryId: 'maven-play-ground', packages: [[$class: 'MavenPackage', mavenAssetList: [[classifier: '', extension: '', filePath: '**PATH_NAME_OF_THE_ARTIFACT**.jar']], mavenCoordinate: [artifactId: '**YOUR_CUSTOM_ARTIFACT_ID**', groupId: 'maven-play-ground', packaging: 'jar', version: '1.0']]], tagName: '**NAME_OF_THE_FILE_IN_THE_REPOSITORY**' }
这是一个无需手动更改和编辑即可自动完成的解决方案。一旦我们在Nexus信息库中创建了目录,该目录将被执行而不会出现任何问题,并且无需更改版本号。
注意:另外,我们还需要从Nexus Repository设置中启用重新部署功能。
答案 2 :(得分:1)
正如@hakamairi所述,不建议将具有相同版本的工件重新上传到Nexus存储库,Maven的构想是工件的GAV始终与唯一的工件相对应。
但是,如果要允许重新部署,则需要将发布存储库的部署策略设置为“允许重新部署”,然后可以重新部署相同的版本。您不能在没有存储库方面允许这样做。
要部署到Nexus存储库,您可以使用Nexus Platform Plugin或Nexus Artifact Uploader。