Мне нужно построить проект (родительский и EAR, который содержит jar, ejb и 2 военных модуля) из RAD 9.5 и с maven.
Когда я создаю проект из командной строки maven, все работает нормально. Он создает архив тощих войн, который работает на WebSphere 8.5.5.
При попытке обновить проект из RAD или экспортировать EAR я получаю файл, который отличается и не будет работать, с ClassNotFoundException для одной из зависимостей EJB.
Глядя дальше, я обнаружил, что есть разница в 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>
такой же результат.