2016-04-12 6 views
6

Ich versuche, ein "klassisches" JAVA EE-Projekt unter Verwendung von IBM websphere 8.0.0.5 in ein Maven-Multimodulprojekt zu konvertieren und Probleme mit IBM-Abhängigkeiten zu begegnen.Maven-Abhängigkeiten für IBM Websphere-Pakete

Wir verwenden IBM-Klassen aus den folgenden Paketen:

  • com.ibm.websphere.asynchbeans
  • com.ibm.websphere.scheduler
  • com.ibm.websphere.ce.cm
  • com.ibm.ws.asynchbeans
  • com.ibm.ws.util.ThreadPool

Zu meinem lokalen Projekt erhalten zu erstellenden ich die was.installer-8.0.0.pm von IBM heruntergeladen und installiert es auf meine Maven

mvn install -f "was.installer-8.0.0.pom" -D serverInstallationFolder="C:\Program Files (x86)\IBM\WebSphere\AppServer" 

Dieser Schritt war erfolgreich mit nach Befehlszeile ausgegeben.

Ich habe dann die folgenden Abhängigkeiten zu meinem Projekt von IBM beschrieben:

In parent:

<dependency> 
<groupId>com.ibm.tools.target</groupId> 
<artifactId>was</artifactId> 
<version>8.0.0</version> 
<type>pom</type> 
<scope>provided</scope> 
</dependency> 

In-Modul:

<dependency> 
    <groupId>com.ibm.tools.target</groupId> 
    <artifactId>was</artifactId> 
</dependency>  

Aber ich kann immer noch nicht kompilieren meine Projekt, da die IBM Pakete nicht gefunden werden.

Kann mir jemand helfen, einen Fehler zu finden und zu korrigieren, den ich gemacht habe?

bearbeiten

Nachdem aus den Kommentaren folgenden BevynQ Spitze kopierte ich die "was_public.jar" auf "was_public-8.0.0.jar" (bei IBM here beschrieben) und es zu meiner Repository:

mvn install:install-file -Dfile="C:\Program Files (x86)\IBM\WebSphere\AppServer\dev\was_public-8.0.0.jar" -DpomFile="C:\Program Files (x86)\IBM\WebSphere\AppServer\dev\was_public-8.0.0.pom" 

ich änderte dann die Abhängigkeiten:

<dependency> 
<groupId>com.ibm.websphere.appserver</groupId> 
<artifactId>was_public</artifactId> 
<version>8.0.0</version> 
<scope>provided</scope> 
</dependency> 

<dependency> 
    <groupId>com.ibm.websphere.appserver</groupId> 
    <artifactId>was</artifactId> 
</dependency>  

Dies trug dazu bei, die Kompilierung Fehler für den Import zu bekommen s bis com.ibm.websphere erledigt.

Was ich jetzt noch offen habe, sind die Pakete com.ibm.ws.* Paket. Jeder hat eine Idee?

Edit 2 Ich habe die folgende Abhängigkeit und dann wurde ich von den com.ibm.ws.* Importfehler beseitigen.

<dependency> 
    <groupId>com.ibm.websphere.ws</groupId> 
    <artifactId>com.ibm.ws.runtime</artifactId> 
    <version>1.0.0</version> 
</dependency> 

Aber es läßt sich noch nicht wie jetzt indirekt Verweise nicht gefunden werden kann (in meinem Fall commonj.work.WorkManager). Es scheint, dass ich für jede einzelne Sache weitere .jars hinzufügen muss. Gibt es nicht eine einfachere Möglichkeit, alle Websphere-Jars auf einmal zur Verfügung zu stellen, wie in dem oben verlinkten Tutorial mit der com.ibm.tools-Abhängigkeit beschrieben (die nicht funktionieren)?

+0

Ich glaube nicht, dass das funktioniert. Sie möchten die erforderlichen Bibliotheken in Ihrem lokalen Speicher installieren. https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html. Das POM ist nicht genug – BevynQ

+0

Ich habe meine Frage bearbeitet, nachdem ich Ihre Empfehlung ausprobiert habe und ich konnte die 'com.ibm.websphere' Pakete kompilieren, aber immer noch einige der' com.ibm.ws' fehlen. Jeder weiß, wie man sie bekommt? – bish

Antwort

0

Hier ist die Lösung, damit ich meine Abhängigkeitsprobleme gelöst:

  1. ich die Firma Repository-Manager konfiguriert (Nexus) als Spiegel. In diesem Zusammenhang sind alle IBM Pakete vorhanden. Wie Sie denken können, hat das das Hauptproblem gelöst.
  2. Ich habe dann die folgenden Abhängigkeiten nach gemeinsamem Maven Stil:

Abhängigkeiten in pom.xml (Versionsnummern Eigenschaften extrahieren):

<dependency> 
    <groupId>com.ibm.websphere.ws</groupId> 
    <artifactId>com.ibm.ws.runtime</artifactId> 
    <version>${ibm.ws.runtime.version}</version> 
</dependency> 


<dependency> 
    <groupId>com.ibm.ws.prereq</groupId> 
    <artifactId>commonj-twm</artifactId> 
    <version>${ibm.ws.prereq.commonj-twm.version}</version> 
</dependency> 

Leider habe ich eine „nette“ Lösung nicht bieten kann das ist brauchbar von allen Menschen, aber die Antwort von njr und der Kommentar von BevynQ half bei Los, um mit dem Problem klarer zu werden und half, das Problem in einer "mehr manuellen" Weise durch Kopieren der benötigten Gläser zu lösen Hand.

3

Im Allgemeinen sind com.ibm.websphere Öffentliche API für die Verwendung von Anwendungen (dies gilt für die Pakete, die Sie oben aufgeführten), die mit diesen Wesen in was_public.jar

, ist das Produkt Interna im Allgemeinen com.ibm.ws Paket jedoch konsistent ist. Darf ich fragen, welche Interface-Methoden Sie aus dem com.ibm.ws.asynchbeans Paket verwenden? Vielleicht gibt es eine öffentliche API-Alternative.

In Bezug auf commonj.work ist die einzige Stelle, die ich in der Produktabbildung von WebSphere Application Server finden kann, WAS/plugins/com.ibm.ws.prereq.commonj-twm.jar. Es sieht also so aus, als müssten Sie das zum Kompilieren verwenden.

+1

Benutzer sollten nicht direkt auf den Inhalt von WAS_HOME/plugins/zugreifen, daher sollte dies als Produktproblem betrachtet werden. APARs wurden für andere APIs verwendet, die in WAS_HOME/dev/nicht verfügbar waren (z. B. http://www-01.ibm.com/support/docview.wss?uid=swg1PM85738). –

+0

Zum Beispiel verwenden wir das 'WorkManagerImpl' aus dem' com.ibm.ws.asynchbeans' Paket.Ich bin mir nicht sicher, ob es mir erlaubt ist, die Bibliotheken zu ändern, da es ein produktives Modul ist und die Migration für Maven und CI (in der aktuellen Phase) ein erster Schritt ist, um Erfahrungen mit Maven zu sammeln und CI zu machen in der Zukunft. Danke für den Hinweis, in welchem ​​Jar die 'commonj' Dateien sind. Gestern habe ich von einem firmenweiten Nexus erfahren, wo die ibm-Dateien sind, also versuche ich es jetzt. Aber ich behalte Ihre Antwort im Hinterkopf und werde später noch einmal darauf eingehen. – bish

0

Ich war mit Blick auf dieses Problem, da ich ein Projekt mit Maven Version 3.3.9 zu bauen versucht, 1.8.0_101 auf Java-Version ausgeführt wird, wie im Screenshot dargestellt:

enter image description here

Dies ist, wie ich löste es: Schritt 1. Laden Sie das commonj.jar von here herunter. Schritt 2. Bestimmen Sie, welches JDK Ihr Maven verwendet, indem Sie mvn -version in die Eingabeaufforderung eingeben. enter image description here

Schritt 3. Gehen Sie zu diesem Verzeichnis und legen Sie die commonj.jar Datei dort im jre/lib/ext Verzeichnis, wie unten dargestellt. Jetzt sollte Ihr Projekt in Maven ohne Probleme erstellt werden.

enter image description here