使用 ansible maven_artifact 获取 jar-with-dependencies

Get jar-with-dependencies using ansible maven_artifact

是否可以使用 ansiblemaven_artifact 获得 Java jar-with-dependencies

现在介绍一下上下文:

  1. 我有一个简单的 Java 应用程序。这意味着我需要为这个应用程序生成一个 jar-with-dependencies 类型的 jar 才能作为一个独立的可执行文件。
  2. 我在注册表中使用 mvn deploy 推送我的 jar(在我的例子中:Nexus)
  3. 我正在使用 Ansible 来部署我的应用程序,使用 maven_artifact 包似乎是一个明智的选择(我想它比我想的更好地管理幂等性).

从逻辑上讲,当我这样做时,我得到了简单的 jar(没有所有依赖项)而不是 jar-with-dependenices.

您可以按照以下步骤执行此操作:

  • 确保您的 jar-with-dependencies 已通过特定的 classifier 上传到 Nexus,例如full。有关 classifier 的更多信息,请查看 Maven documentation
  • 使用 Ansible maven_artifact moduleclassifier 属性指向您的 full 神器。

这是我的答案:

文件组织应该是:

roles/fetch-my-awesome-jar/tasks/main.yml

以及内容:

---
- name: fetch my awesome jar
  maven_artifact:
    group_id: my.awesome.group.id
    artifact_id: my-awesom-artifact-id
    version: my.awesome.version.number
    classifier: jar-with-dependencies
    extension: jar
    repository_url: http://my-local-nexus:<port>/repository/my-awesome-repo/
    username: my-username
    password: my-password
    dest: my-awesome-target-directory

我使用的 maven_artifact 版本删除了 jar-with-dependencies 分类器。