[英]Maven and RAD produce different EARs
我必须从RAD 9.5和maven构建一个项目(Parent和EAR,其中包含jar,ejb和2个war模块)。
当我从maven命令行构建项目时,一切正常。 它正在创建在WebSphere 8.5.5上运行的瘦战争存档。
当尝试从RAD更新项目,或者导出EAR时,我得到的文件不同且不起作用,对于EJB的一个依赖项,使用ClassNotFoundException。
再往前看,我发现classpath部分的MANIFEST.MF有所不同。 Maven项目放置了带有lib /前缀和m2e / RAD的实例,如下所示:
Class-Path: lib/log4j-api-2.6.jar lib/log4j-core-2.6.jar lib/junit-4.12.jar lib/hamcrest-core-1.3.
在纯maven和:
Class-Path: log4j-api-2.6.jar log4j-core-2.6.jar junit-4.12.jar hamcrest-core-1.3.
我试图用pom中的设置更新项目。 这是我最接近工作申请的。
我目前的ejb插件配置:
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<ejbVersion>3.1</ejbVersion>
</configuration>
</plugin>
异常(最低级别):
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:600)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:243)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:786)
at java.lang.ClassLoader.loadClass(ClassLoader.java:764)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585)
at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
... 75 more
我想这是问题,但我不知道解决它的问题。
更新:尝试添加到清单部分:
<classpathPrefix>lib/</classpathPrefix>
同样的结果。
我注意到如果我将maven生成的manifest.mf复制到项目中然后用RAD构建项目,它会将正确的文件带到最终的EAR。 这是一种解决方法。 此外,根据这个 :m2e-wtp只会生成清单,如果不存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.