Java 分发此框架的最佳方式
我刚刚创建了一个框架(将其描述为集成会更准确),我想知道分发它的最佳方式是什么。这个项目是mavenized的,并且使用Spring3,但是我在这两个方面都是新手,我不确定发布这个项目的最佳方式是什么 该框架涉及我创建的Javascript库、Spring3(WebMVC部分)和HibernateValidator之间的集成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文件夹,其中包含此集成所需的
- 对于整个项目,我有一个
pom.xml
- 我有一个
(正确的名称空间)和与集成相关的类src/main/java
- 我有一个
目录和一个webapp
文件夹,其中包含此集成所需的Javascript文件js
- 我有一个
目录,其中tld用于Java中实现的自定义标记WEB-INF/tlds
- 我有一个自定义标记的
目录WEBINF/tags
- 我在
中有一个src/main/resources
applicationContext.xml
- 我在
中有一个WEB-INF
springmvcservlet.xml
- 我在
中有一个web-INF
(看起来是标准的、现成的;我不记得做过任何更改)web.xml
- 我有一个
,其中包括对集成框架的测试src/test/java/
很抱歉,我没有弄清楚我所说的“分发”是什么意思(我的意思是其他开发人员可以将此框架作为一个工件(可能是一个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定义时,您需要小心,因为它可能没有被配置为适合下游项目的需要。在许多情况下,您最终将编写一个新的定义提示:将它们作为资源放在类路径中唯一的包名下是最安全、最简单的方法
web.xml
必须存在,但它将被maven-war-plugin
从下游war项目中移除。你需要在你的下游项目中嵌入这个插件。如果您在web.xml
中有任何servlet定义,它将在下游项目web.xml
中重新定义