我的任务是编写与Nexus / Maven交互的脚本。我在Maven中使用的文件是放置在那里的XML文件,具体的想法是shell脚本将使用它们。实质上,这些文件是另一个应用程序的配置。
我已经完成了从存储库中提取文件的脚本,但是我在将文件放入存储库时遇到了问题。要拉取文件,我使用的是插件依赖:get。
我需要的或多或少与该插件相反。一个将使用新版本的文件更新存储库。我认为“mvn deploy:deploy-file”是我需要使用的。那会有用吗?
如果是这样,那么下一个问题就是我似乎无法弄清楚如何设置授权。我有一个定义了服务器的设置文件,其中包含正确的授权信息,但是服务器和存储库(或URL?)之间的链接丢失,授权没有正确执行。
如何将存储库URL连接到settings.xml文件中的服务器信息,以便mvn将被授权执行正确的操作? (我不知道.pom文件在哪里用于Maven,并且可能没有权限来改变它。)
谢谢,
肖恩。
答案 0 :(得分: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-whatever
与repositoryId
参数匹配。
话虽如此,我会质疑Maven对此的适当性。它专为二元artifaccts而不是配置而设计。
答案 1 :(得分:0)
问题原来是在-Durl选项中。
使用依赖项:get plugin时,URL类似于:
-Durl=http://companymavenrepo
这对依赖插件工作得很好。
但是,尝试使用deploy插件将内容放入存储库时,这还不够。 URL必须包含maven服务器以及放置工件的确切存储库。 (我的术语可能已关闭。)我访问了我们的Nexus / Sonatype网页,查看了存储工件的确切存储库,然后使用了类似的东西:
-Durl=http://companymavenrepo/nexus/content/repositories/this_maven_repo
解决了授权问题,我能够毫无问题地将文件添加到存储库中。
(如果我发布了我试图使用的两个mvn命令行,这可能更容易让其他人看到。另一方面,当你在一个命令中使用带有特定值的-Durl选项时似乎也是合理的它可以在另一个命令行中保持不变。)
肖恩。