gpt4 book ai didi

java - 分发这个框架的最佳方式

转载 作者:行者123 更新时间:2023-12-02 00:46:33 25 4
gpt4 key购买 nike

我刚刚创建了一个框架(将其描述为集成会更准确),我想知道分发它的最佳方式是什么。该项目已成熟并使用 Spring 3,但我在这两个领域都是新手,我不确定分发此项目的最佳方式是什么。

该框架涉及我创建的 Javascript 库、Spring 3(Web MVC 部分)和 Hibernate Validator 之间的集成。

  • 我有一个用于整个项目的 pom.xml
  • 我有一个 src/main/java (正确命名空间),其中包含与集成相关的类。
  • 我有一个 webapp 目录,其中包含一个 js 文件夹,其中包含此集成所需的 Javascript 文件。
  • 我有一个 WEB-INF/tlds 目录,其中包含用 Java 实现的自定义标记的 tld。
  • 我有一个用于自定义标记的 WEBINF/tags 目录。
  • 我在 src/main/resources 中有一个 applicationContext.xml
  • 我在 WEB-INF 中有一个 springmvc-servlet.xml
  • 我在 WEB-INF 中有一个 web.xml(看起来是标准的并且开箱即用;我不记得做过任何更改)。<
  • 我有一个 src/test/java/,其中包含集成框架的测试

我应该包含/排除哪些文件/目录,以及分发此集成的好方法是什么(对于 Spring 3)?有标准吗?

更新

抱歉,我不清楚“分发”的含义:)我的意思是其他开发人员可以将此框架作为工件包含在他们的项目中(可能作为 jar),类似于库的分发方式。我只是对其中有特定于 Web 应用程序的内容感到困惑。

最佳答案

将maven webapp项目做成框架,其他人使用起来会有些麻烦。问题不在于您应该包含/排除什么,而是下游 webapp 项目应该包含/排除什么。下游项目需要将 web.xml 从其 war 依赖项中排除,并需要确保它不包含与其依赖的 war 文件冲突的文件/文件夹名称。

正常情况下,web.xml会被maven-war-plugin排除,但是像logger配置这样的配置文件默认不会被排除,会导致下游崩溃项目的.由于web.xml被排除,下游项目将无法知道其war依赖项中的servlet定义是什么。您需要自己相应地复制或定义它们。

由于您没有对 web.xml 进行任何更改,因此我认为您不会将其作为 web 应用程序运行。你应该将其打成jar包,而不是war包,并将其转换为普通的maven jar项目,即删除src/main/webapp文件夹

尽管可能存在 war 依赖性,但我强烈建议不要这样做。

更新

从你的评论来看,这也是我担心的。这可能是您必须使用 war 包的唯一原因。因此,您需要记住:

  1. 如果您在 src/main/webapp 下有 Spring 调度程序配置 xml 和 bean 定义,请确保使用 的配置设置在下游项目中正确包含/排除它们maven-war-插件。确保文件名不会与下游项目崩溃。当您想要重用 bean 定义时,您需要小心,因为它可能未配置为适合下游项目的需要。在许多情况下,您最终会编写一个新的定义。 提示:将它们作为资源放在类路径中唯一的包名称下是最安全、最简单的方法。

  2. web.xml 必须存在才能制作 war 包,但它会被 maven-war-plugin 从下游 war 项目中排除>。您需要在下游项目中包含此插件。如果您在 web.xml 中有任何 servlet 定义,它将在下游项目 web.xml 中重新定义。

  3. 小心 src/main/webapp 文件夹下的文件夹/文件冲突。

总之,主要关注的是放置 xml 配置的位置以及如何在下游项目(而不是在集成中)包含/排除它。

关于java - 分发这个框架的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4858137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com