2017-08-31 1094 views
2

我有一个本地存储库,我一直从不同的项目中安装jars一段时间。我们也有一个nexus服务器运行,但它并没有我在本地的所有罐子。将我的本地Maven存储库同步到Nexus公共存储库

我可以尝试一个接一个地同步罐子到连接点。但是,有没有一种更有效的方法来同步到nexus?理想情况下,我希望执行一个可以查看本地回购库中所有工件的单个命令,并推送任何在连接点中缺失的命令。

如果一个cmd脚本是唯一的方法,那么这对于特定的技巧也是非常有用的。

我可能会在我的进步给予更新到目前为止

echo off 
echo MavenSync 
setlocal EnableDelayedExpansion 
for /R . %%f in (*) do (
    set jarfile=%%~dpnxf 
    set name=%%~dpnf 
    set pomFile=!name!.pom 
    set clientJar=!name!-client.jar 

    if [!jarfile:~-4!]==[.jar] (
    echo !jarfile! 
    echo !pomFile! 
    set repo=http://server/nexus/content/repositories/releases/ 

    if [!jarfile:~-10!]==[client.jar] (

     rem Handled elsewhere 

    ) else (

     if [!jarfile:~-12!]==[SNAPSHOT.jar] (
     set repo=http://server/nexus/content/repositories/snapshots/ 
    ) 

     if EXIST !clientJar! (
     echo mvn deploy:deploy-file -Dpackaging=jar -DrepositoryId=nexus -Durl=!repo! -DpomFile="!pomFile!" -Dfile="!jarfile!" -Dfiles="!clientJar!" -Dtypes=client-jar -Dclassifiers=bin 
    ) else (
     echo mvn deploy:deploy-file -Dpackaging=jar -DrepositoryId=nexus -Durl=!repo! -DpomFile="!pomFile!" -Dfile="!jarfile!" 
    ) 

    ) 
) 
) 
+1

基本问题是,所有项目都应该交付到Nexus服务器...解决了整个问题... – khmarbaise

回答

-1

没有轻易这样做,而无需编写自定义脚本的方式。但是,如果您有构建所有内容并通过mvn install在本地安装的构建,则可以通过执行mvn deploy将其部署到您的连接。对于这个工作,你需要一个部分添加到您的POM为distributionManagement

<distributionManagement> 
    <snapshotRepository> 
     <id>snapshot.nexus</id> 
     <url>${nexus.snapshot.repo}</url> 
    </snapshotRepository> 
    <repository> 
     <id>release.nexus</id> 
     <url>${nexus.release.repo}</url> 
    </repository> 
</distributionManagement> 

这只是部署最新版本的每个项目。然而,并没有旧版本的后退历史。

根据您使用的nexus版本,可能会复制文件系统的内容。 Nexus 2使用基于文件系统的存储,因此您可以将.m2回购与远程存储进行比较,并根据需要复制不同的项目。一旦必要的更改被复制完毕,远程回购的重新索引应该选取您所做的更改。 Nexus 3将文物存储在数据库中,因此如果您使用该版本,则不可能。

-1

Maven的目标deploy:deploy-file

http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

可以部署单一的文物的Nexus(附聚甲醛,所以您不必手动指定GAV)。

您需要编写一个运行在本地存储库上的脚本,收集所有工件并使用上述目标将它们部署到Nexus。

+0

这并不真正回答这个问题吗? – robjwilkins

+0

@robjwilkins我的答案可能比你的更有帮助。 OP说罐子已经存在。我提供了一条如何编写修复给定情况的脚本的路径。 –

相关问题