2016-06-20 12 views
1

Ich muss ein Projekt (Parent und EAR, das jar, ejb und 2 Kriegsmodule enthält) aus RAD 9.5 und mit Maven erstellen.Maven und RAD produzieren verschiedene EARs

Wenn ich ein Projekt von Maven Kommandozeile erstellen, funktioniert alles gut. Es erstellt ein Skinny Wars-Archiv, das unter WebSphere 8.5.5 ausgeführt wird.

Beim Versuch, Projekt von RAD zu aktualisieren oder EAR zu exportieren, erhalte ich die Datei, die anders ist und nicht funktioniert, mit ClassNotFoundException für eine der Abhängigkeiten des EJB.

Weiter sah ich, dass es einen Unterschied in MANIFEST.MF in Classpath Abschnitt gibt. Maven Projekt setzen es Fälle mit lib/Präfix und M2e/RAD ohne, wie folgt aus:

Class-Path: lib/log4j-api-2.6.jar lib/log4j-core-2.6.jar lib/junit-4.12.jar lib/hamcrest-core-1.3. 

in reiner Maven und:

Class-Path: log4j-api-2.6.jar log4j-core-2.6.jar junit-4.12.jar hamcrest-core-1.3. 

Ich habe versucht, ein Projekt zu aktualisieren, spielte mit den Einstellungen in Pom. Dies ist der Arbeitsanwendung, der ich am nächsten komme.

Meine aktuelle ejb Plugin-Konfiguration:

 <plugin> 
      <artifactId>maven-ejb-plugin</artifactId> 
      <version>2.5</version> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
        </manifest> 
       </archive> 
       <ejbVersion>3.1</ejbVersion> 
      </configuration> 
     </plugin> 

Und die Ausnahme (die unterste Ebene):

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 

Ich nehme an, dass es das Problem ist, aber ich weiß nicht heiß, es zu beheben.

Update: versuchte Addierabschnitt zu manifestieren:

<classpathPrefix>lib/</classpathPrefix> 

gleiches Ergebnis.

+0

Wenn Sie eine EAR-Datei-Unterstützung von Skinny Wars erstellen, müssen die extrahierten Dateien irgendwo liegen, was im Falle eines EAR in den lib-Ordner der EAR-Ebene bedeutet. Ich weiß nicht, was RAD hier macht ... – khmarbaise

+0

Ja, sie sind da. Nur nicht von nirgendwo referenziert. Siehe auch Update für eine Frage. – Anton

+0

Die Ausnahmen werden vom Websphere-Anwendungsserver ausgegeben, wenn Sie die EAR-Datei bereitgestellt haben? – khmarbaise

Antwort

0

ich bemerkt habe, dass, wenn ich manifest.mf von Maven zu dem Projekt kopieren und dann bauen das Projekt mit RAD, es nimmt die richtige Datei zum endgültigen EAR. Es ist ein Workaround. Gemäß this: m2e-wtp erzeugt nur Manifest, wenn es nicht existiert.

0

Dies ist eine runde Antwort, aber Sie könnten mehr Erfolg mit den EE-Projekten beginnen: WAR, EAR, etc. und dann mit der Option "In Maven Projekte konvertieren".

Sie finden Informationen here und here.

Sobald Sie eine Maven-Struktur kennen, die auf die EE-Projektstruktur in RAD verweist, können Sie auch in die andere Richtung arbeiten. Nicht sicher, wie viel Arbeit Sie übrig haben, wenn Sie mit Ihrem bestehenden Projektformat zufrieden sind.

nicht sicher, ob ich Ihre Frage beantwortet, aber das war zu lang für einen Kommentar so ist es hier ...

+0

Dies ist bereits getan, startete das Projekt als RAD-Projekt (die Ameise unter seiner Haut versteckt) und musste in Maven konvertiert werden, weil CI und Ant nicht gut gearbeitet. Nach der Konvertierung habe ich festgestellt, dass sich RAD anders verhält als der ursprüngliche Maven. – Anton