我正在开发一个基于Spring (MVC),Hibernate,PostgreSQL (使用Maven)的web项目。现在,我正在尝试获得一个新客户,他需要在应用程序的几个部分中有所不同。我已经阅读了来自Sonatype的Maven权威指南,以了解多模块Maven项目,但我最重要的问题之一还没有得到回答:如何在多个模块/项目上共享公共视图组件,并根据我想要为其构建的客户来集成它们?服务层非常清晰,但我不知道如何共享jsp/jspf文件,并在构建特定的customer-module (然后依赖于common-module)时将它们与自定义文件合并。
您将如何避免简单地克隆常用代码?
发布于 2010-09-22 15:43:07
我不知道如何共享jsp/jspf文件,并在构建特定的客户模块时将它们与自定义文件合并(然后依赖于公共模块)。
这看起来是Overlays的一个很好的用例。
发布于 2010-09-22 15:08:00
您可以将常用组件放入库项目中,并根据需要使用dependency:unpack或dependency:unpack-dependencies将其解压缩
例如,你的项目布局应该是这样的:
root
|____ common-lib (jar, contains common java code)
|____ common-gui (jar, contains only non-java stuff like js, jsp, css etc)
|____ client1 (war)
|____ client2 (war)client1和client2对common-lib都有一个常规的compile依赖,但对common-gui只有一个provided依赖(如果你使用dependency:unpack,它根本不需要是项目依赖)
现在,您可以将如下代码添加到客户端项目中:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-common-gui-elements</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.yourcompany</groupId>
<artifactId>common-gui</artifactId>
<version>${project.version}</version>
<type>jar</type>
<!-- war assembly directory -->
<outputDirectory>
${project.build.directory}/${project.build.finalName}
</outputDirectory>
<includes>**/*.jsp,**/*.css,**/*.js</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>通过这种方式,您可以重用您的组件,但您始终可以选择将哪些组件分发给哪个客户端。
https://stackoverflow.com/questions/3766873
复制相似问题