我有两个maven web应用程序,假设ProjectA和ProjectB打包为WAR文件。这两个应用程序都使用第三个maven应用程序ProjectC,它包含一些共享类。我在ProjectA和ProjectB中添加了ProjectC作为依赖项。
ProjectA和ProjectB使用maven jetty插件在Eclipse中运行,但在生产中,它作为WAR文件部署到Tomcat Web服务器。
这种方法过去一直很好,直到我开始分享一些hibernate实体。由于我在这个问题jar-file from persistence.xml is not found in eclipse中描述的问题,不可能将persistence.xml与ProjectC.jar中的实体链接起来,所以我必须找到一些替代解决方案。
我认为如果我可以在编译ProjectA和ProjectB时编译ProjectC类,它会起作用,所以结构如下:
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 multimodule方法,但也欢迎其他一些解决问题的想法。
谢谢,
答案 0 :(得分:1)
Follow this link了解一种可以用来将第三个项目(如项目C)的资源作为资源解压缩到另一个项目中的方法。这是一个优秀而简单的指南。 您可以将这些实体作为项目A和B的类包含在内,但将persistence.xml和其他常用文件放在新项目中会更容易,并将java类(您的实体)保存到单独的jar项目中。
答案 1 :(得分:0)
尝试在战争清单中设置addClasspath=true
并将战争类打包到jar archiveClasses。
你将拥有像这样的战争结构
projectA -WEB-INF -lib -project-a.jar -project-c.jar