2012-08-10 31 views
0

我的任务是编写与Nexus/Maven交互的脚本。我在Maven中使用的文件是放置在那里的XML文件,它们将被shell脚本使用。基本上,这些文件是另一个应用程序的配置。mvn与依赖关系相反:get?如何设置授权?

我已经完成了从存储库中提取文件的脚本,但我在将文件放入存储库时遇到问题。为了拉取文件,我使用插件依赖项:get。

我需要的是或多或少与该插件相反。一个将用新版本的文件更新存储库。我认为“mvn deploy:deploy-file”是我需要使用的。这会工作吗?

如果是这样,那么我的下一个问题是,我似乎无法弄清楚如何设置授权。我有一个定义了服务器的设置文件,其中包含正确的授权信息,但服务器和存储库(或URL?)之间的链接缺失,授权未正确执行。

如何将repository URL连接到settings.xml文件中的服务器信息,以便mvn被授权执行正确的操作? (我不知道在哪里.pom文件是Maven的,并且可能没有权限来改变它。)

感谢,

肖恩。

回答

0

问题原来是在-Durl选项。

当使用依赖性:获得插件,网址是这样的:

-Durl=http://companymavenrepo 

这对于依赖插件的正常工作。

但是,尝试使用deploy插件将内容放入存储库时,这还不够。 URL必须包含maven服务器以及放置工件的确切位置。 (我的术语可能会关闭)我去了我们的Nexus/Sonatype的网页,看着存储已神器的确切资料库,然后使用这样的事情:

-Durl=http://companymavenrepo/nexus/content/repositories/this_maven_repo 

就解决授权问题,我是能够将文件添加到存储库中而没有问题。如果我发布了两条mvn命令行,我试图使用它们,这对其他人来说可能更容易。另一方面,当您在一个特定值中使用-Durl选项时,这似乎也是合理的命令行,它的工作原理是它将在另一个命令行中保持不变。)

肖恩。

0

deploy:deploy-file是正确的。与-Durl=http://repo:port/path,-DrepositoryId=server-whatever一起使用。你settings.xml需要包含

<servers> 
    <server> 
     <id>server-whatever</id> 
     <username>demo</username> 
     <password>demo</password> 
    </server> 
    </servers> 

所在服务器ID server-whateverrepositoryId参数相匹配。

话虽如此,我会质疑Maven对此的适当性。它专为二元artifaccts而不是配置。

+0

坏消息是我事前已经做好了。这里是我的mvn调用:mvn -s /settings.xml deploy:deploy-file -Durl = http:// mymavenrepo/-DrepositoryId = myrepoid -DgroupId = groud-id -DartifactId = filename.xml -Dversion = 1.0.2 - Dpackaging = xml -Dfile = filename.xml。 – Sean 2012-08-13 13:40:18

+0

我的服务器部分几乎和您的建议一样,其中repositoryId与命令行中定义的一样。服务器部分的不同之处在于增加了'文件权限'和'目录权限'。但是我仍然收到认证错误。有任何想法吗? – Sean 2012-08-13 13:46:44

+0

你可以使用Wireshark来嗅探HTTP流量吗? – artbristol 2012-08-13 13:54:53