2015-07-02 9 views
2

У меня есть два веб-приложения maven, скажем ProjectA и ProjectB, которые упакованы в файлы WAR. Оба приложения используют третье приложение maven ProjectC, которое содержит некоторые общие классы. Я добавил ProjectC как зависимость в ProjectA и ProjectB.Maven multimodule без подмодуля как файл jar

ProjectA и ProjectB работают в Eclipse, используя плагин maven jetty, но в процессе его развертывания используются как файлы WAR на веб-сервере Tomcat.

Этот подход работал нормально, пока я не начал делиться некоторыми спящими сущностями. Из-за проблемы, описанной в этом вопросе, jar-file from persistence.xml is not found in eclipse, невозможно связать persistence.xml с объектами в ProjectC.jar, поэтому мне нужно найти альтернативное решение.

Я думал, что это будет работать, если я мог бы составить классы ProjectC когда ProjectA и ProjectB составляются, поэтому структура выглядит следующим образом:

projectA 
-WEB-INF 
    -classes  
    -project-a.classes 
    -project-c.classes 
projectB 
-WEB-INF 
    -classes  
    -project-b.classes 
    -project-c.classes 

, а затем:

projectA 
-WEB-INF 
    -classes  
    -project-a.classes 
    -lib 
    -project-c.jar 
projectB 
-WEB-INF 
    -classes  
    -project-b.classes 
    -lib 
    -project-c.jar 

Я не знайте, возможно ли это с использованием мультимодулярного подхода maven, но также приветствуются некоторые другие идеи, которые помогут решить эту проблему.

Спасибо,

ответ

1

Follow this link знать, как вы могли бы использовать для распаковки ресурсов некоторого третьего проекта (например, ваш проект C) в другой проект в качестве ресурсов. Это отличный и простой гид. Вы можете принять идею включить сущности в качестве классов ваших проектов A и B, но проще будет перенести persistence.xml и другие распространенные файлы в новый проект и сохранить классы java (ваши сущности) в отдельные проекты jar ,

+0

Спасибо за вашу идею. Я согласен с тем, что было бы лучше, если бы все, что связано с спящим, было в совместном проекте. Проблема в том, что проект A является надежным и использует Spring. Я не хочу использовать Spring в другом проекте. Это потребует больших изменений, если я хочу использовать ту же конфигурацию в обоих проектах, но я обязательно попробую. На данный момент я пытаюсь выяснить, возможно ли иметь META-INF/persistence.xml в каком-либо месте в проекте b, где у него будет доступ к /lib/project-c.jar –

+1

. Добро пожаловать. Вы всегда можете указать объекты в файле persistence.xml с использованием элементов (вместо использования ).Тогда у вас не будет проблем, связанных с расположением проекта-c, если он «доступен» для проекта-b (например, если он находится в папке web-inf/lib или привнесен средой среды выполнения/сервером в военное приложение) – Guillermo

+0

О нет. Существует более 100 объектов, и они все еще меняются, поэтому было бы неприятно для поддержания. Я бы попробовал завтра, поскольку вы предложили иметь persistence.xml в совместном проекте. –

0

попытаться установить addClasspath=true в войне манифеста и упаковать свои военные классы в банку с archiveClasses.

Вы будете иметь военную структуру как этот

 
projectA 
-WEB-INF 
    -lib 
    -project-a.jar 
    -project-c.jar 
+0

Я не уверен, понял ли я вашу идею, но это все равно добавит мой общий проект как файл jar, а hibernate persistance.xml не сможет получить доступ к объектам. –

+0

Это ничего не меняет, поскольку объекты спящего режима из проекта C будут в файле jar. Persistence.xml находится в main/resources/META-INF/persistence.xml и содержит lib/project-c.jar. Однако этот файл jar не может быть найден из этого местоположения. Это обсуждение дает хорошее объяснение, почему я не могу использовать файл jar в своем проекте http://stackoverflow.com/questions/4433341/what-is-the-right-path-to-refer-a-jar-file-in- jpa-persistence-xml-in-a-web-app/16503869 # 16503869 –

+0

Затем измените путь к файлу jar. http://stackoverflow.com/a/16503869/3315474 –

Смежные вопросы