2012-12-19 7 views
8

In der my-Anwendung habe ich einige Gläser als Projektabhängigkeit festgelegt. Diese Gläser werden als Benutzerbibliothek hinzugefügt. Da ich die Anwendung in JBoss AS7 ausführe und ich die JSF-Implementierung verwende, die vom JBoss-Server bereitgestellt wird, habe ich diese JSF-JAR-Dateien vom Modul kopiert und eine neue Benutzerbibliothek namens JBoss JSF erstellt. Diese Bibliothek wurde zum Erstellen von JSF 2 Dynamic Web Project in Eclipse verwendet. Jetzt, wenn ich es als eine WAR-Datei exportiere, werden diese Jsf-Jars automatisch kopiert und in /WEB-INF/lib des Krieges hinzugefügt. Ich möchte nicht, dass diese Dateien hinzugefügt werden, da sie bereits im Container vorhanden sind.Wie auszuschließen, dass JARS in der WAR-Datei hinzugefügt werden

Gibt es eine Möglichkeit, es zu tun?

Weitere Informationen, das ist der Inhalt der Datei .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> 

Die Deployment Assembly meiner Anwendung: enter image description here

+0

@Rahul Ich habe diesen Link schon einmal gesehen, die Lösung bietet eine Möglichkeit, Dateien von der Quellen-Registerkarte auszuschließen. –

+1

verwenden Sie einfach ant oder maven. – BigMike

+0

+1 für Vorschlag auf Ameisen (auch wenn die Frage "Eklipse basiert" ist) – acostache

Antwort

2

testen

  1. Projekt öffnen Eigenschaften
  2. Select Deployment Assembly
  3. Bibliotheken auswählen, die Sie aus dem Krieg Datei ausschließen müssen dann auf Entfernen klicken. Jars Sie ausgewählt wird aus dem Krieg

oder versuchen Datei entfernt werden, ein weiteres Attribut auf die .classpath Datei hinzufügen

<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

Bitte lassen Sie mich wissen, wenn es funktioniert hat. – Rahul

+0

Rahul Ich habe ein Bild der Deployment Assembly hinzugefügt. Da sind keine Gläser. –

+0

Können Sie bitte versuchen Sie es an die .classpath Datei Rahul

0
  1. Öffnen Sie das Dialogfeld Projekteigenschaften.
  2. Wählen Sie im linken Bereich den Java-Erstellungspfad aus.
  3. Quelle auswählen Tab.
  4. Eine Liste aller im Projekt enthaltenen Jars wird aufgelistet.
  5. Wählen Sie die JAR-Datei und klicken Sie auf Bearbeiten.
  6. Wählen Sie im Fenster für eingeschlossene oder ausgeschlossene Muster "ausgeschlossen" (wenn Sie das möchten) und fügen Sie ein Muster hinzu. Wählen Sie Ok.
  7. In jeder Reihe der Gläser, auf der rechten Seite sehen Sie entsprechend ein Plus- oder Minuszeichen.
+0

Danke, aber es tut mir leid, in der Registerkarte Quelle gibt es nur die Liste aller Quelldateien. Es gibt keine solche Liste von Gläsern. Die JARS-Dateien sind in den Bibliotheken aufgelistet. –

+0

Versuchen Sie, die unerwünschten Bibliotheken auf der Registerkarte "Bestellung und Export" zu deaktivieren. –

+0

Ich habe diese Option ausprobiert. Die Bibliotheken sind dort, aber sie werden nicht überprüft. –

0

Sie den Umfang der Abhängigkeit einstellen zu versehen . Sie erwarten, dass das JDK oder ein Container die Abhängigkeit zur Laufzeit bereitstellt. Wenn Sie beispielsweise eine Webanwendung für die Java Enterprise Edition erstellen, würden Sie die Abhängigkeit von der Servlet-API und zugehörigen Java EE-APIs für den bereitgestellten Bereich festlegen, da der Webcontainer diese Klassen bereitstellt. Dieser Bereich ist nur für den Kompilierungs- und Testklassenpfad verfügbar und nicht transitiv. Eine Abhängigkeit mit diesem Bereich wird nicht in Kriege/Ohren aufgenommen.

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