Разработка веб-приложения на Java для двух клиентов - PullRequest
5 голосов
/ 22 сентября 2010

Я занимаюсь разработкой веб-проекта на основе Spring (MVC), Hibernate, PostgreSQL (с использованием Maven).Сейчас я пытаюсь найти нового клиента, которому требуются некоторые различия в нескольких частях приложения.Я прочитал подробное руководство Maven от Sonatype, чтобы получить представление о мультимодульных проектах Maven, но там не был дан ответ на один из моих самых важных вопросов: как я могу поделиться общими компонентами вида для нескольких модулей / проектов и интегрировать их в зависимостина клиента, для которого я хочу построить?Уровень обслуживания довольно понятен, но я не могу понять, как делиться файлами jsp / jspf и объединять их с пользовательскими файлами при создании определенного клиентского модуля (который затем зависит от общего модуля).

Как бы вы попытались избежать простого клонирования обычно используемого кода?

Ответы [ 2 ]

4 голосов
/ 22 сентября 2010

Я не могу понять, как делиться файлами jsp / jspf и объединять их с пользовательскими файлами при создании определенного клиентского модуля (который зависит от общего модуля).

Это похоже на хороший вариант использования оверлеев .

3 голосов
/ 22 сентября 2010

Вы можете поместить общие компоненты в проект библиотеки и распаковать их по мере необходимости, используя зависимость: распаковать или зависимость: распаковать-зависимости

Например, макет проекта будетбыть таким:

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 каждый будет иметь регулярную compile зависимость от common-lib, но только provided зависимость от common-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>

Таким образом, вы сможете повторно использовать свои компоненты, но вывсегда можете выбрать, какие компоненты вы распространяете для какого клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...