没有子模块作为jar文件的Maven多模块

时间:2015-07-02 23:34:28

标签: java maven

我有两个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方法,但也欢迎其他一些解决问题的想法。

谢谢,

2 个答案:

答案 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