0

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

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

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

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

更新

抱歉,我没有弄清楚“分发”的含义:) 我的意思是其他开发人员可以将此框架作为工件包含在他们的项目中(可能作为 jar),类似于库的分发方式。我只是对那里有特定于 webapp 的东西这一事实感到困惑。

4

3 回答 3

1

在这个问题中也描述了使用Maven WAR 覆盖

还要创建一个示例 - 可能来自您已经拥有的 webapp - 所有这些并从中生成一个Maven 原型

于 2011-02-01T09:19:36.640 回答
1

取决于您在此处“分发”的含义。:)

如果您只是分发给其他开发人员以便他们可以在同一个项目上工作,那么您可能想要调用mvn clean以删除目标文件夹、编译的类等。此命令将负责文件/目录的包含和排除。您需要做的就是压缩整个项目并“分发”它。当开发人员将此项目导入工作区时,他们会通过您的 pom.xml 获取所有 jar。在我看来,Pom.xml 是任何 Maven 项目中最重要的部分。

如果您希望最终用户能够运行您的项目而不是更改您的代码,您可能需要调用mvn package以创建 war 文件。这样,您的用户可以将此war 文件放入应用程序服务器并运行它。

于 2011-02-01T02:25:56.957 回答
1

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

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

由于您没有对您web.xml的 . 你应该把它做成jar包,而不是war包,并将其转换为普通的maven jar项目,即删除src/main/webapp文件夹

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

更新

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

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

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

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

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

于 2011-02-01T02:38:48.693 回答