【问题标题】:Automated deployment of EAR project without obtain dependencies from a repository无需从存储库获取依赖项即可自动部署 EAR 项目
【发布时间】:2018-12-28 13:19:34
【问题描述】:

是否可以将工件 (.ear) 部署到应用程序服务器 (AS) 中而无需从存储库中获取其依赖项?

让我解释一下:我尝试配置以部署到 AS 中的 maven 项目有 3 个模块:

  1. 网络(.war - 前端)
  2. EJB (.ejb - 后端)
  3. 实体(.jar - 实体类)

这些模块被包装在一个 EAR 模块中,并且在某些存储库(如 Nexus 或 JFrog Artifactory)中都不可用。当我尝试使用 Cargo Maven 插件或 JBoss Deployment Maven 插件时,两者都通知无法解析这些模块的依赖关系。


更新(2019 年 3 月 1 日)

该问题与以下链接的第 6 项和第 7 项中引用的问题类似:http://webdev.jhuep.com/~jcs/ejava-javaee/coursedocs/content/html/ejb-basicex-eardeploy.html#ejb-basicex-eardeploy-testmodule

【问题讨论】:

  • 您无需解决依赖关系即可将 ear 部署到应用程序服务器。文物被塞进耳朵里。我不知道您提到的插件是否需要他们试图从工件(或他们的 pom)中获得的额外信息。这可能是原因。不过,让我补充一下,通常 所有 工件都在存储库中,因此存储库中没有 war 和 jar 是一个例外,可能会导致意外行为。
  • 在可以访问所有工件的主机上进行 EAR 包装。之后它是一个普通文件,你应该能够这样对待它。
  • 我也有同样的想法@JFMeier。但是 Cargo Maven 插件会通知无法解析工件,例如,即使 .war.jar 文件被打包到 .ear 中。
  • @rogerio_gentil 我们需要更多信息。日志文件说什么?
  • 当我执行一个示例项目(类似于实际应用程序)-rm -rf ~/.m2/repository/rogeriogentil/* && mvn clean package -DskipTests && mvn -pl app-ear/ -Pdeploy cargo:deploy,Maven 产生以下日志:Failed to execute goal on project app-ear: Could not resolve dependencies for project rogeriogentil:app-ear:ear:1.0: Could not find artifact rogeriogentil:app-ejb:jar:1.0 in central (https://repo.maven.apache.org/maven2)

标签: maven deployment ear cargo-maven2-plugin


【解决方案1】:

这是一种解决方法,但有效。项目不依赖于内部存储库(如 Nexus 或 JFrog Artifactory),而是可以使用 Maven 的参数 -Dmaven.repo.local 将文件夹定义为本地计算机上的存储库。因此,部署工件的插件也可以使用此属性并获取其他工件。

即在当前文件夹上构建应用程序:

mvn -Dmaven.repo.local=. package

例如,使用 Cargo Maven 插件部署应用程序(在本例中为.ear),而不依赖于内部存储库:

mvn -pl app-ear/ -Dmaven.repo.local=. cargo:redeploy

OBS:使用maven.repo.local 属性,定义为值的文件夹将填充项目的所有依赖项。就我而言,这不是问题,因为此命令已在持续集成管道中使用,并且所有文件和文件夹最终都会被丢弃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 2017-02-24
    • 2014-10-17
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2021-11-10
    相关资源
    最近更新 更多