2012-12-19 21 views
8

Nella mia applicazione ho impostato alcuni jar come dipendenza del progetto. Questi vasi vengono aggiunti come libreria utente. Poiché eseguo l'applicazione in JBoss AS7 e sto utilizzando l'implementazione JSF fornita dal server JBoss, ho copiato quei JSF jars dal modulo e creato una nuova libreria utente, ovvero JBoss JSF. Questa libreria è stata utilizzata per creare JSF 2 Dynamic Web Project in Eclipse. Ora quando lo esporta come file WAR, quei jsf jars vengono automaticamente copiati e aggiunti in /WEB-INF/lib della guerra. Non voglio che questi file vengano aggiunti in quanto già presenti nel contenitore.Come escludere i jar da aggiungere nel file WAR

C'è un modo per farlo?

Per ulteriori informazioni, questo è il contenuto del file .classpath:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src/common"/> 
    <classpathentry kind="src" path="src/service"/> 
    <classpathentry kind="src" path="src/web"/> 
    <classpathentry kind="src" path="src/persistent"/> 
    <classpathentry kind="src" path="src/dao"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre7"> 
     <attributes> 
      <attribute name="owner.project.facets" value="java"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JBoss JSF"> 
     <attributes> 
      <attribute name="owner.project.facets" value="jst.jsf"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JBoss Servlet"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JBoss log4j"/> 
    <classpathentry kind="output" path="build/classes"/> 
</classpath> 

L'Assemblea distribuzione della mia candidatura: enter image description here

+0

@Rahul Ho visto questo collegamento prima, la soluzione fornisce un modo per escludere i file dalla scheda di origine. –

+1

usa solo ant o maven. – BigMike

+0

+1 per suggerimento su formica (anche se la domanda è "basata su eclissi") – acostache

risposta

2

provare questa proprietà

  1. Apri progetto
  2. Selezionare Assembly Deployment
  3. Selezionare le librerie che è necessario escludere dal file di guerra, quindi fare clic su Rimuovi. Vasi selezionati verranno rimossi dalla guerra presentare

o cercare di aggiungere più un attributo al file .classpath

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JBoss JSF"> 

    <attributes> 

    <attribute name="owner.project.facets" value="jst.jsf"/> 

    <attribute name="org.eclipse.jst.component.nondependency" value=""/> 

    </attributes> 

+0

Per favore fatemi sapere se ha funzionato. – Rahul

+0

Rahul Ho aggiunto un'immagine del Deployment Assembly. Non ci sono barattoli. –

+0

Potete per favore cercate di aggiungere più un attributo al file .classpath Rahul

0
  1. Aprire la finestra di dialogo Proprietà progetto.
  2. Selezionare Percorso di generazione Java dal pannello di sinistra.
  3. Seleziona scheda Origine.
  4. Verrà elencato un elenco di tutti i barattoli inclusi nel progetto.
  5. Selezionare il file JAR e fare clic sul pulsante di modifica.
  6. Nella finestra del modello incluso o escluso, selezionare escluso (Se è ciò che si desidera) e aggiungere un motivo. Seleziona Ok.
  7. In ogni fila del barattolo, sul lato destro vedrete un segno più o meno di conseguenza.
+0

Grazie, ma mi dispiace, nella scheda Sorgente c'è solo la lista di tutti i file sorgente. Non esiste una tale lista di barattoli. I file jar sono elencati nelle Librerie. –

+0

Provare a deselezionare le librerie indesiderate nella scheda Ordine ed esportazione. –

+0

Ho provato questa opzione. Le librerie ci sono ma non sono controllate. –

0

è possibile impostare il campo di applicazione della dipendenza fornita . ndicates ti aspetti che JDK o un container forniscano la dipendenza in fase di runtime. Ad esempio, quando si crea un'applicazione Web per Java Enterprise Edition, si imposta la dipendenza sull'API servlet e le API Java EE correlate all'ambito fornito poiché il contenitore Web fornisce tali classi. Questo ambito è disponibile solo sul percorso di classe di compilazione e test e non è transitivo. Una dipendenza con questo ambito non sarà inclusa nelle guerre/orecchie.

<dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4</version> 
     <scope>provided</scope> 
    </dependency> 
Problemi correlati