0

我的任务是编写脚本以与 Nexus/Maven 交互。我在 Maven 中使用的文件是放置在那里的 XML 文件,其特定想法是它们将被 shell 脚本使用。本质上,这些文件是另一个应用程序的配置。

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

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

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

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

谢谢,

肖恩。

4

2 回答 2

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>

服务器 IDserver-whateverrepositoryId参数匹配的位置。

话虽如此,我会质疑 Maven 是否适合这一点。它是为二进制工件而不是配置而设计的。

于 2012-08-11T12:20:16.983 回答
0

问题出在 -Durl 选项中。

使用dependency:get 插件时,URL 类似于:

-Durl=http://companymavenrepo

这对于依赖插件来说效果很好。

但是,当尝试使用部署插件将内容放入存储库时,这还不够。URL 必须包含 maven 服务器和放置工件的确切存储库。(我的术语可能不正确。)我访问了我们的 Nexus/Sonatype 网页,查看了存储工件的确切存储库,然后使用了如下内容:

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

这解决了授权问题,我能够毫无问题地将文件添加到存储库中。

(如果我发布了我尝试使用的两个 mvn 命令行,这可能更容易让其他人看到。另一方面,当您在一个命令行中使用具有特定值的 -Durl 选项并且它似乎也是合理的工作,它将在另一个命令行中保持不变。)

肖恩。

于 2012-08-14T15:08:32.533 回答