是否可以将工件(.ear
)部署到应用程序服务器(AS)中,而无需从存储库获取其依赖项?
让我解释一下:我尝试配置以部署到 AS 中的 maven 项目有 3 个模块:
- 网页(
.war
- 前端) - EJB (
.ejb
- 后端) - 实体(
.jar
- 实体类)
这些模块被包装到EAR模块中,并且在某些存储库(如Nexus或JFrog Artifactory)中不可用。当我尝试使用 Cargo Maven 插件或 JBoss 部署 Maven 插件时,两者都会通知无法解析这些模块的依赖关系。
已更新 (03/01/2019)
该问题与以下链接第6项和第7项中引用的问题类似:http://webdev.jhuep.com/~jcs/ejava-javaee/coursedocs/content/html/ejb-basicex-eardeploy.html#ejb-basicex-eardeploy-testmodule
这是一种解决方法,但有效。项目不依赖于内部存储库(如 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
属性,定义为 value 的文件夹将填充项目的所有依赖项。就我而言,这不是问题,因为此命令用于持续集成管道,并且所有文件和文件夹在最终阶段都被丢弃。