【发布时间】:2014-12-28 12:22:29
【问题描述】:
所以我们有一个包含三个模块的 Ear 项目 (MyEar):
- 客户端模块(我们称之为
MyClient) - EJB 模块(我们称之为
MyEjbModule) - Web 模块(我们称之为
MyWebModule)
web模块包含MyWebModule/WebContent/MyApp.jnlp下的jnlp文件
此 jnlp 指向所需的 jar 文件,我们希望将其与应用程序一起自动部署,而这正是我们目前面临的一些问题。
在 Eclipse 中,我们将 MyWebModule 项目设置为将 jar 文件从某个位置部署到应用程序的根目录(jnlp 文件也部署在该位置)。
这在一台机器上运行良好,每次我们将项目发布到服务器时,都会从指定位置复制一个新的 jar。但是,在另一台机器上,项目可以正确部署除此 jar 之外的所有内容,我们必须将其与 jnlp 文件放在 WebContent 下才能部署(这意味着我们必须每次都手动更新该 jar)。
经过大量研究并试图寻找环境中的差异,我们在{workspace}/.metadata/.plugins/org.eclipse.core.resources/.projects/MyEar/beadep/my_domain/MyEar/ 文件夹下发现了一个差异,这似乎是 Eclipse 在发布到服务器之前暂存 EAR 的位置
在工作部署中,每次发布应用时,我们都会看到更新后的 ear 文件夹结构:
- 库
- 元信息
- MyClient.jar
- MyEJBModule.jar
- MyWebModule.war
并且 web 模块的 WAR 文件夹包含 jnlp 文件旁边的正确 jar。
但是,在另一台机器上,在该文件夹下,我们看到一个名为 split_src 的文件夹,其中仅包含一个 META-INF 文件夹,其中包含几个描述符和一个名为 .beabuild.txt 的文件
值得注意的是,将 EAR 项目导出到 ear 文件时,jar 会被正确复制并按原样放置在 ear 中。
有谁知道为什么beadep 文件夹中的差异,以及为什么不将依赖项复制到一台机器上?
【问题讨论】:
-
你在使用 Maven 吗? stackoverflow.com/questions/8489277/…我建议继续导出ear而不是依赖Eclipse来正确部署
-
不使用 Maven,但我们可能很快就会迁移。这当然是开发部署,所以这里需要Eclipse,而且每次都导出到EAR,效率有点低……
标签: java eclipse deployment weblogic ear