Netbeans使用Maven为Tomcat5和Tomcat7构建webapp

时间:2012-05-31 10:10:03

标签: java maven tomcat7 netbeans-7 tomcat5.5

我有一个项目,其中包含许多webapps和jsps,并且可以作为.war文件构建。

我现在需要说服Netbeans和Maven构建Tomcat-7版本和Tomcat-5版本。有人能指出我正确的方向吗?

我还希望能够包含一个不同的web.xml,具体取决于我正在构建的客户,但我暂停了一旦上述问题得到解答,我可能会自己解决这个问题。

我想我需要在我的pom文件中使用两个配置文件,但我不知道我需要在每个配置文件中选择:

a) The correct jdk to compile with (JDK 6 for TC-7 and JDK 5 for TC-5)
b) The correct version of the javax libraries.

我正在使用Netbeans 7.1.2。

1 个答案:

答案 0 :(得分:1)

最佳结果是有一个war文件可以在Tomcat 5和Tomcat 7上运行,并且对每个客户都是一样的。

您可以使用maven配置文件为每个客户采用构建,但我建议将单个配置外部化为JNDI或通过某个环境变量读取的外部属性文件。 Spring提供了PropertyResolverconfigurer(例如)

既然你想支持Tomcat 5,我猜你的项目是用Java 1.5构建的吗? 这也应该在Tomcat 7上运行。

javax依赖项应该在pom.xml文件中提供作用域。所以他们不会被部署。如果您的应用程序需要特定版本的jar已经是tomcat的一部分,那么您也可以使用配置文件来解决这个问题。但这可能与每个客户的个人资料相冲突。

如果您的Tomcat 5和Tomcat 7版本之间存在很大差异,那么创建3个模块可能是一个想法 - 所有这些都使用打包“war”。一个包含'中性'文件,一个包含tomcat 5文件,一个包含tomcat 7文件。 tomcat项目将使用中性模块作为war文件依赖项,maven将执行war叠加。因此,一个版本将生成tomcat 5和tomcat 7版本(以及一个不用于部署的中性war文件)。

根据http://tomcat.apache.org/whichversion.html,tomcat 5的最小java版本是java 1.4。但这与运行tomcat的内容有关。 tomcat 7也应该能够运行Java 1.5字节码。它的JDK是1.6。您可以使用1.5作为maven-compiler-plugin的源版本和目标版本来定位这两个版本。

但我认为应该可以创建一个将在tomcat 7上运行的tomcat 5构建。您是否有两个版本之间存在冲突的依赖关系?或者你预先编译jsp文件?

对于maven构建,您只需要一个jdk(1.6)就可以为较旧的目标版本编译源代码。