有人可以帮我配置 maven-war-plugin 吗?
出于安全原因,我想在两台服务器上为两个不同的用户组运行两个非常相似的 Web 应用程序,而不是只为所有用户组部署一个。因此,我想在他们之间共享尽可能多的代码。
我打算创建一场战争,它也可以独立运行以进行开发,并在两个单独的 Web 项目中重用其大部分项目。我想重用例如 spring 配置文件 (applicationContext-XX.xml)、jspx、css、...和 Java 代码。但我还需要编写一些扩展共享类的 Java 类。
我想使用 spring roo 生成的测试项目来试用 maven-war-plugin。我已经尝试了几件事,但部署仍然存在问题。
如果我只使用战争,那么我不能扩展任何 Java 类,因为代码无法编译:
<dependency>
<groupId>com.test.pizzashop</groupId>
<artifactId>PizzaShopCommons_WEB</artifactId>
<scope>compile</scope>
<version>0.1.0.BUILD-SNAPSHOT</version>
<type>war</type>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<overlays>
<overlay>
<groupId>com.test.pizzashop</groupId>
<artifactId>PizzaShopCommons</artifactId>
</overlay>
</overlays>
</configuration>
</plugin>
即使我没有扩展任何 Java 类,我的 Tomcat (mvn tomcat:run) 也不会启动,因为它没有找到正确位于 lib 文件夹中的 jar。
我还尝试使用第二个共享项目,它只包含 Java 类和 Spring 配置文件以及所有依赖项,然后打包为 jar。在 Tomcat 中运行主 Web 应用程序仍然会导致异常:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/spring/webmvc-config.xml];嵌套异常是 FileNotFoundException:无法打开 ServletContext 资源 [/WEB-INF/spring/webmvc-config.xml] 这个文件 webmvc-config.xml 位于它应该在战争中的位置(由 maven 战争插件复制在那里)。
<dependency>
<groupId>com.test.pizzashop</groupId>
<artifactId>PizzaShopCommons_WEB</artifactId>
<scope>compile</scope>
<version>0.1.0.BUILD-SNAPSHOT</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.test.pizzashop</groupId>
<artifactId>PizzaShopCommons_SpringConf_Classes_Dependencies</artifactId>
<scope>compile</scope>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<overlays>
<overlay>
<groupId>com.test.pizzashop</groupId>
<artifactId>PizzaShopCommons_WEB</artifactId>
<excludes>
<exclude>*.java</exclude>
</excludes>
<excludes>
<exclude>*.jar</exclude>
</excludes>
</overlay>
</overlays>
</configuration>
<!-- <executions> <execution> <phase>generate-resources</phase> </execution> </executions> -->
</plugin>
生成的战争中的文件结构如下所示:
+---pizzashop-1.0.0-BUILD-SNAPSHOT
| +---images
| | add.png ...
| +---META-INF
| | | MANIFEST.MF
| | \---maven
| | \---com.test.pizzashop
| | \---PizzaShop
| | pom.properties
| | pom.xml
| +---styles
| | standard.css ...
| \---WEB-INF
| | web.xml
| +---classes
| | | builddef.lst ...
| | +---com
| | | \---test
| | | \---pizzashop
| | | +---domain
| | | | Pizza.class ...
| | | +---service
| | | | PizzaService.class ...
| | | \---web
| | | PizzaController.class ...
| | \---META-INF
| | | aop-ajc.xml
| | | persistence.xml
| | \---spring
| | applicationContext-security.xml
| | applicationContext.xml
| | database.properties
| +---i18n
| | application.properties ...
| +---layouts
| | default.jspx ...
| +---lib
| | antlr-2.7.6.jar ...
| +---spring
| | | root-context.xml
| | | webmvc-config.xml
| | \---appServlet
| | xx_servlet-context_xx.xml
| +---tags
| | | create.tagx ...
| \---views
| | dataAccessFailure.jspx ...
我怎样才能让它运行?是否有可能仅通过一个共享项目(一个罐子或战争)来实现这一目标?