【发布时间】:2015-05-07 17:29:59
【问题描述】:
如果目标机器上没有安装 maven,是否可以运行 mvn 命令?我知道这很奇怪。
这是否可以使用一些在包装工具/实用程序中内置了 maven/etc 工具的包装工具/实用程序?
这就是我想要实现的目标。使用 Ansible(和 Maven)从远程 Artifactory 服务器获取工件到给定文件夹。
- 我想从 Artifactory 下载一个工件。
- 目标机器未安装 maven(mvn)。
-
如果我创建一个小的单行 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