【问题标题】:How to run mvn if there is no maven installed on the target machine如果目标机器上没有安装 maven,如何运行 mvn
【发布时间】:2015-05-07 17:29:59
【问题描述】:

如果目标机器上没有安装 maven,是否可以运行 mvn 命令?我知道这很奇怪。

这是否可以使用一些在包装工具/实用程序中内置了 maven/etc 工具的包装工具/实用程序?

这就是我想要实现的目标。使用 Ansible(和 Maven)从远程 Artifactory 服务器获取工件到给定文件夹。

  1. 我想从 Artifactory 下载一个工件。
  2. 目标机器未安装 maven(mvn)。
  3. 如果我创建一个小的单行 shell 脚本,那么我必须一个一个地处理所有存储库,即按某种顺序(即首先查看发布存储库,然后再查看快照等,反之亦然)。

    (wget http://myArtifactoryServer:somePort/artifactory/libs-snapshot-local/com/company/product/artifactName/version/artifactNameVersion.extension || wget http://myArtifactoryServer:somePort/artifactory/libs-stage-local/com/company/product/artifactName/version/artifactNameVersion.extension || wget http://myArtifactoryServer:somePort/artifactory/libs-alpha-local/com/company/product/artifactName/version/artifactNameVersion.extension || wget http://myArtifactoryServer:somePort/artifactory/libs-beta-local/com/company/product/artifactName/version/artifactNameVersion.extension || wget http://myArtifactoryServer:somePort/artifactory/libs-gamma-local/com/company/product/artifactName/version/artifactNameVersion.extension || wget http://myArtifactoryServer:somePort/artifactory/libs-release-local/comcompany/product/artifactName/version/artifactNameVersion.extension)

我想知道是否还有其他最简单的方法可以通过提供“虚拟存储库名称”即 libs-release(我创建并查看所有物理版本存储库或仅使用 company-repos virtual 来获取工件)我不必使用 || 或 wget 一个一个地命名每个 repo 名称。

如果有其他方法,我也不必使用 wget。 Maven 自动查找工件并在所有 repos 中搜索(您在 settings.xml 或 pom.xml 或命令行 maven-dependency-plugin:get/copy 中定义的内容)

我也可以用 groovy 编写代码,但是目标服务器上必须有 groovy。

【问题讨论】:

  • 你可以看看 gradle。关于这个主题的优点是,您可以使用 gradle 包装器 shell 脚本和必要的 gradle 二进制文件来发布它。目标环境不需要安装 gradle。 Gradle 还可以正确处理存储库等。看看here 的包装器。
  • 我不是百分百确定你想要达到的目标。 Capsule 是一个用于构建可执行 jar 的项目,它还支持从 maven 存储库下载依赖项。
  • 您可以使用Maven wrapper as well。但是为什么不通过 Maven 创建一个包含所有这些内容的 tar.gz 存档并只下载 tar.gz 文件呢?
  • 似乎在 Ansible 2.0 中,我可以轻松地从 Artifactory 下载工件......到目前为止,我的 Ansible

标签: maven ansible artifactory ansible-playbook artifact


【解决方案1】:

派对迟到了,但是:

重新阅读该问题后,正如您所提到的,您缺少的是一个虚拟回购,它结合了回购,因此它们看起来是一个。 Artifactory 开箱即用地支持这一点。

作为只需要 bash 的 maven 的替代方案,您可以从 sonatype http://blog.sonatype.com/2011/01/downloading-artifacts-from-nexus-with-bash 尝试这个 shell 脚本。

【讨论】:

  • 在 Ansible playbook 中,您可以使用 maven_artifact 模块而不是调用 mvn 或进行 wget 下载。
猜你喜欢
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 2016-02-20
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
相关资源
最近更新 更多