【发布时间】:2019-07-23 12:19:53
【问题描述】:
我们的环境中有多个 Web 项目(100 多个)、自定义 jar 和 REST Web 服务项目。我们使用 ANT 来构建 Jboss5.2.1,我正在尝试使用 MyEclipse 2019 迁移到 Maven 并部署到 Tomcat 服务器。所需的所有常见 jar 都在 Jboss/server/default/lib 中,并添加到 Web 项目的构建路径中。我们不希望将依赖项 jar 打包到 WAR 文件中。使用 Maven,依赖项被添加到战争中,从而增加了战争的规模。我们希望将这些依赖项(如 gson、poi 等)放在一个公共位置,并使用构建路径引用它们。有这种可能吗?
我确实读过有关使用系统范围的信息。但由于已弃用且不建议这样做,我不想走那条路。使用父项目设置本地 maven 存储库似乎也不适合我们,因为我不希望 WAR 的 lib 文件夹中的依赖项 jar。
在这种情况下,使用 Maven 是否是正确的方法? MyEclipse CI 2019 默认将所有 Web 项目创建为 Maven 项目。因此,如果这不是适合我们的构建工具,我将不得不想办法禁用它。
将依赖项 jar 打包到 WAR 中是不可接受的,因为部署团队认为这会不必要地增大每个 WAR 的大小。我是 Maven 新手,并试图以正确的方式设置项目。感谢您的帮助!
【问题讨论】:
-
全局库通常是一种糟糕的方法,而部分 server/default/lib 正是如此。通常应将战争打包并包含所需的一切。此外,您是否需要 JBoss 服务器或者您正在做两件事。从 Ant 转移到只从 JBoss 到 Tomcat 吗? – khmarbaise 7 分钟前
-
我们正在从 JBoss 迁移到 Tomcat。我们以前有 EJB,但我们正朝着使用 REST Web 服务的方向发展。与一切发生战争会增加战争的规模,从而增加服务器启动时间。由于我们有 100 多场战争,随着时间的推移,这会增加。您能否详细说明为什么全局库是一种不好的方法?
-
我没有写战争应该包含一切。它应该只有真正需要的东西。如果您喜欢 REST 服务,则每个服务应该相互独立,并且 REST 服务(微服务?)的基本思想是无共享原则……如果您有多个共享库,则需要测试所有更改的每个更改服务...无法更改真正问题所在的单个服务的库。因此,进一步考虑使用 Tomcat 将是一个好主意,它可以考虑完全包含 Tomcat 等的 Spring Boot。并使开发更容易等(测试等)..
-
感谢您的解释!但是,有没有办法在使用 Maven 时实现这一点?每个 REST 服务将彼此独立,但是我们希望将 jar 共享到一个公共位置。
-
如果重要的话,在最新版本的 MyEclipse 中,我们强制 Java EE 8 项目基于 Maven,但您仍然可以选择早期的 Java EE 版本。我们做出这个决定是因为我们发现大多数用户都在使用 Maven,而且它被用于新的 Java EE 8 项目的可能性非常高。可以肯定的是,使用 Maven 可以实现您想要的,而且它可能是完成这项工作的最佳工具。不幸的是,如果不了解您的应用程序的架构、项目关系等,就不太容易更具体。希望这会有所帮助!
标签: maven dependencies myeclipse