Java 分发此框架的最佳方式

Java 分发此框架的最佳方式,java,spring-mvc,distribution,software-distribution,hibernate-validator,Java,Spring Mvc,Distribution,Software Distribution,Hibernate Validator,我刚刚创建了一个框架(将其描述为集成会更准确),我想知道分发它的最佳方式是什么。这个项目是mavenized的,并且使用Spring3,但是我在这两个方面都是新手,我不确定发布这个项目的最佳方式是什么 该框架涉及我创建的Javascript库、Spring3(WebMVC部分)和HibernateValidator之间的集成 对于整个项目,我有一个pom.xml 我有一个src/main/java(正确的名称空间)和与集成相关的类 我有一个webapp目录和一个js文件夹,其中包含此集成所需的

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

该框架涉及我创建的Javascript库、Spring3(WebMVC部分)和HibernateValidator之间的集成

  • 对于整个项目,我有一个
    pom.xml
  • 我有一个
    src/main/java
    (正确的名称空间)和与集成相关的类
  • 我有一个
    webapp
    目录和一个
    js
    文件夹,其中包含此集成所需的Javascript文件
  • 我有一个
    WEB-INF/tlds
    目录,其中tld用于Java中实现的自定义标记
  • 我有一个自定义标记的
    WEBINF/tags
    目录
  • 我在
    src/main/resources
    中有一个
    applicationContext.xml
  • 我在
    WEB-INF
    中有一个
    springmvcservlet.xml
  • 我在
    web-INF
    中有一个
    web.xml
    (看起来是标准的、现成的;我不记得做过任何更改)
  • 我有一个
    src/test/java/
    ,其中包括对集成框架的测试
我应该包括/排除哪些文件/目录,以及分发此集成的好方法是什么(对于Spring3就是这样)?有标准吗

更新


很抱歉,我没有弄清楚我所说的“分发”是什么意思(我的意思是其他开发人员可以将此框架作为一个工件(可能是一个jar)包含在他们的项目中,类似于库的分发方式。我只是对其中包含特定于webapp的内容感到困惑。

这取决于您这里所说的“分发”的含义。:)

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


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

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

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


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

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

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

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

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

更新

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

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

  • 为了制作war包,
    web.xml
    必须存在,但它将被
    maven-war-plugin
    从下游war项目中移除。你需要在你的下游项目中嵌入这个插件。如果您在
    web.xml
    中有任何servlet定义,它将在下游项目
    web.xml
    中重新定义

  • <