2016-04-12 37 views
6

Sto provando a convertire un progetto JAVA EE "classico", utilizzando IBM websphere 8.0.0.5, in un progetto multi-modulo Maven e affronta problemi con le dipendenze IBM.Dipendenze Maven per pacchetti IBM Websphere

Usiamo le classi IBM tra i seguenti pacchetti:

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

Per ottenere il mio progetto locale da compilare Ho scaricato il was.installer-8.0.0.pm da IBM e installato al mio Maven usando

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

Questo passo è stato di successo in base alla potenza della riga di comando.

Ho poi aggiunti i seguenti dipendenze per il mio progetto, come descritto da IBM:

In genitore:

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

Nel modulo:

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

Ma ancora non riesco a compilare il mio progetto in quanto i pacchetti IBM non vengono trovati.

Qualcuno può aiutarmi a trovare e correggere un errore che ho fatto?

Modifica

Dopo aver seguito BevynQ punta dai commenti che ho copiato il "was_public.jar" a "was_public-8.0.0.jar" (descritta in IBM here) e ha aggiunto al mio 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" 

ho poi cambiato le dipendenze a:

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

Ciò ha contribuito a ottenere gli errori di compilazione per l'importazione s a com.ibm.websphere fatto.

Quello che ho ancora aperto è il pacchetto com.ibm.ws.*. Qualcuno ha un'idea?

Edit 2 ho aggiunto la seguente dipendenza e poi sono stato liberarsi degli errori di importazione com.ibm.ws.*.

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

Ma ancora non compila come ora indirettamente riferimenti non possono essere trovate (nel mio caso commonj.work.WorkManager). Sembra che ho bisogno di aggiungere ulteriori .jars per ogni singola cosa. Non c'è un modo più semplice per fornire tutti i jar di websphere in una volta sola, come descritto nel tutorial sopra collegato con la dipendenza com.ibm.tools (che non funziona)?

+0

non credo che funzionerà. Vuoi installare le librerie richieste nel tuo negozio locale. https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html. Il POM non è sufficiente – BevynQ

+0

Ho modificato la mia domanda dopo aver provato il tuo consiglio e ho potuto ottenere i pacchetti 'com.ibm.websphere' da compilare, ma mancano ancora molti dei' com.ibm.ws'. Qualcuno sa come ottenerli? – bish

risposta

0

Ecco la soluzione in modo ho risolto i miei problemi con le dipendenze:

  1. ho configurato il repository manager dell'azienda (Nexus) come uno specchio. In questo nesso sono presenti tutti i pacchetti ibm. Come puoi pensare, hai risolto il problema principale.
  2. Ho poi aggiunti i seguenti dipendenze in base al comune stile Maven:

dipendenze in pom.xml (numeri di versione estratti di proprietà):

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

Siamo spiacenti, non posso fornire una soluzione "bella" utilizzabile da tutte le persone, ma la risposta da njr e il commento da BevynQ hanno aiutato molto a chiarire meglio il problema e hanno contribuito a risolvere il problema in un modo "più manuale" copiando i barattoli necessari per mano.

3

In generale, sono com.ibm.websphere API pubblica per l'utilizzo da applicazioni (questo è vero per i pacchetti che elencato sopra) che è coerente con questi essendo in was_public.jar

Tuttavia, com.ibm.ws pacchetto è generalmente interni prodotto. Posso chiederti quali metodi di interfaccia stai usando dal pacchetto com.ibm.ws.asynchbeans? Forse c'è un'alternativa API pubblica.

Per quanto riguarda commonj.work, l'unico posto dove posso trovare questo l'immagine del prodotto WebSphere Application Server in è WAS/plugins/com.ibm.ws.prereq.commonj-twm.jar modo che appaia come è necessario utilizzare che per la compilazione contro.

+1

Gli utenti non dovrebbero accedere al contenuto di WAS_HOME/plugins/direttamente, quindi questo dovrebbe probabilmente essere considerato un problema di prodotto. Gli APAR sono stati presi per altre API che non erano disponibili in WAS_HOME/dev/(ad es. Http://www-01.ibm.com/support/docview.wss?uid=swg1PM85738). –

+0

Ad esempio, usiamo 'WorkManagerImpl' dal pacchetto' com.ibm.ws.asynchbeans'.Non sono sicuro di essere "autorizzato" a modificare le librerie in quanto si tratta di un modulo produttivo e la migrazione per Maven e CI è (nella fase attuale) un primo passo per acquisire esperienza con Maven e per essere in grado di fare CI nel futuro. Grazie per il suggerimento in cui sono presenti i file 'commonj'. Ieri mi sono accorto di un nesso aziendale in cui sono presenti i file ibm, quindi è un modo che provo ora. Ma terrò a mente la risposta e risponderò ad esso più tardi. – bish

0

stavo affrontando questo problema come ho cercato di costruire un progetto con Maven versione 3.3.9, in esecuzione su Java versione 1.8.0_101, come illustrato nello screenshot:

enter image description here

Questo è come mi risolto: Passaggio 1. Scaricare commonj.jar da here. Passaggio 2. Determinare quale JDK viene utilizzato dal tuo operatore digitando mvn -version nel prompt dei comandi. enter image description here

Fase 3. Vai a quella directory e posizionare il file commonj.jar lì nella directory jre/lib/ext, come illustrato di seguito. Ora il tuo progetto dovrebbe costruirsi in Maven senza problemi.

enter image description here