【问题标题】:Get jar-with-dependencies using ansible maven_artifact使用 ansible maven_artifact 获取 jar-with-dependencies
【发布时间】:2018-11-27 09:19:31
【问题描述】:

是否可以使用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 推送到 Nexus?如果是这样,您可以使用maven_artifact 模块的classifier 参数下载它:docs.ansible.com/ansible/2.6/modules/maven_artifact_module.html
  • 很好的电话。我正在检查它。
  • 同意,那里的信息很少。有关分类器的更多信息:maven.apache.org/pom.html#Dependencies
  • 效果太棒了!愿意为此给予你充分的信任。请发布答案,以便我投票给您并标记为正确答案。
  • 同意。我应该更清楚并猜测分类器是本地 Maven 属性!非常感谢您的帮助!

标签: maven ansible jar-with-dependencies


【解决方案1】:

您可以通过以下步骤做到这一点:

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

【讨论】:

  • 其实我什至都懒得把它重命名为fullclassifier: jar-with-dependencies 工作很棒。 jar 被maven_artifact 下载并重命名为普通jar。
【解决方案2】:

这是我的答案:

文件组织应该是:

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 分类器。

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 2020-08-02
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多