为两个客户开发Java Web应用程序项目

5
我正在开发一个基于Spring(MVC)、Hibernate、PostgreSQL (使用Maven)的Web项目。现在我正在尝试获取一个新客户,该客户要求在应用程序的几个部分中进行一些差异。我已经阅读了Sonatype的Maven权威指南,以对多模块Maven项目有所了解,但我最重要的问题之一在其中没有得到答案: 如何分享常见的视图组件到几个模块/项目,并根据需要集成它们来构建所需的客户模块(然后依赖于共同的模块)?服务层很清晰,但我无法想象如何分享jsp/jspf文件并在构建特定客户端模块(然后依赖于共同模块)时与自定义文件进行合并。
您会如何尝试避免只是简单地克隆通常使用的代码?

感谢您的回答!特别是Maven Dependency插件似乎很有用。我还发现可以使用Maven WAR插件和其覆盖功能来实现另一个解决方案。然后,您可以添加对另一个WAR的依赖项,并重复使用其中的部分(例如通用WAR)。Remote Resource插件主要用于许可证分发,但也可能适用于此任务。 - velaia
你应该将这样的注释添加到你所引用的答案中,或者编辑你的原始问题。此外,“感谢回答”的 StackOverflow 版本是点击它们上面的向上箭头,尽管口头感谢也受到赞赏 :-) - Sean Patrick Floyd
2个回答

4
我不知道如何分享 jsp/jspf 文件并在构建特定的客户端模块时将它们与自定义文件合并(然后依赖于 common-module),这看起来像是使用 Overlays 的一个好例子。

3
你可以将常用组件放入库项目中,并使用 dependency:unpackdependency: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)

客户端1和客户端2都需要常用库的编译依赖项,但只需要通用GUI的提供依赖项(如果您使用“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>

那样你就可以重复使用你的组件,但你可以自己选择将哪些组件分发给哪个客户端。

这是另一种方式,也可能很有用,所以加1。它让我想起了Maven中如何在项目之间共享资源 - Pascal Thivent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接