Frage

Wir haben eine Lösung mit zahlreichen Kriegen. Kriege sind ähnlich in dem Sinne, sie alle überwintern und im Frühjahr verwenden. Das bedeutet, dass wir eine Reihe von gleichen Gläsern in jedem Krieg haben. Dies ist immer ein Problem, weil die Größe des Ohres beginnt in keinem Verhältnis zu wachsen.

Ich möchte Maven verwenden Abhängigkeiten zu berechnen und alle Gläser gemeinsam mehrere Kriege an die Wurzel der EAR zu platzieren.

Ich habe versucht, die Organisation mein Projekt mit j2ee Urbild (Maven-Urbild-j2ee-simple), aber alle Kriege sind immer noch mit Abhängigkeiten innerhalb der WEB-INF / lib verpackt. Gibt es eine Möglichkeit gemeinsame Abhängigkeiten zu machen Maven berechnen und legen Sie sie auf EAR, so wie er in der Lage ist, alle Übergangs Abhängigkeiten zu berechnen, wenn ein Krieg oder ein Glas konstruieren?

War es hilfreich?

Lösung

Erstellen Sie ein neues Artefakt namens commons-Gläser und es als pom verpacken. Es sollte auf allen gängigen Gläser ab, die Sie verwenden -. Spring, Hibernate, Log4j, etc

Dann in jeder auf dem Krieg fügen Sie es als Abhängigkeit mit Rahmen „versehen“ (und vergessen Sie nicht die Art, wie pom eingestellt). Sie können es in Ihrem Classpath sehen, aber sie werden nicht in den Krieg verpackt werden. Auf diese Weise können auch Krieg spezifische Abhängigkeiten verpackt in sie, die die Lösung von dünn Kriege nicht bieten.

Andere Tipps

Wie Sie in einem Kommentar erwähnt haben, ist es Maven Aufgabe jede Abhängigkeit zu berechnen. Wenn Sie einen Artefakt erstellen, mit jeder gemeinsamen Abhängigkeit, dann werden Sie auch erraten müssen, welche Abhängigkeiten dort gehören.

Es könnte auch möglich sein, dass man einen Krieg zu implementieren hat, mit er ohne Ohr Abhängigkeiten auf einer anderen Maschine ist, ein, wenn Sie jeden Krieg Abhängigkeit zu versehen gesetzt, dann bist du wieder stecken.

Der einzig richtige Weg, dünn Kriege zu bekommen, ist aus den Beispielen: http://maven.apache.org/plugins/maven -war-Plugin / examples / mager-wars.html

Aber, und jetzt kommt der interessante Teil, ist es eine große! Abkürzung (die die genannten Schmerzen vollständig wegnimmt), zu sagen, Maven, die Ihre WARs Abhängigkeiten haben.

Gehen Sie in Ihrem EAR-Modul eines eine zweite Abhängigkeit vom IST mit Typ-pom für jede IST Abhängigkeit erklären.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.foo</groupId>
    <artifactId>skinny</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>ear</artifactId>
<packaging>ear</packaging>
<dependencies>
    <dependency>
        <groupId>com.foo</groupId>
        <artifactId>war</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>com.foo</groupId>
        <artifactId>war</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>pom</type>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.8</version>
            <configuration>
                <skinnyWars>true</skinnyWars>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <modules>
                    <webModule>
                        <groupId>com.foo</groupId>
                        <artifactId>war</artifactId>
                    </webModule>
                </modules>
            </configuration>
        </plugin>
    </plugins>
</build>

Nun wird jeder Krieg verpackt werden unabhängig mit einer eigenen Abhängigkeiten und die EAR mit mageren WARs und jede Abhängigkeit innerhalb des lib Ordner verpackt werden

Update:

Beachten Sie, dass das Ohr / lib Ordner kann nicht für jede Abhängigkeits jar wie JBoss EAP 6. JSF Komponentenbibliotheken wie Tomahawk, primefaces in einem strengen Container, etc. verwendet werden müssen in WEB-INF / lib wohnen Ordner.

Eine praktische Möglichkeit, dies mit der oben beschriebenen Lösung zu erreichen, ist ein Ausschluss für die Komponentenbibliothek in den Ohren pom.xml wie diese zu machen:

...
<dependencies>
    <dependency>
        <groupId>com.foo</groupId>
        <artifactId>war</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>com.foo</groupId>
        <artifactId>war</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>pom</type>
        <exclusions>
            <exclusion>
                <groupId>org.primefaces</groupId>
                <artifactId>primefaces</artifactId>
            <exclusion>
        </exclusions>
    </dependency>
</dependencies>
...

Jetzt kann jede Abhängigkeit des IST wird in Ohr / lib mit Ausnahme der Komponentenbibliothek gelegt werden, die in WEB-INF / lib innerhalb des IST platziert werden

Sie können das Abhängigkeiten Umfang "unter der Voraussetzung". Dies bedeutet, dass sie von einem anderen Modul zur Verfügung gestellt werden und nicht in dem endgültigen Glas oder Krieg einbezogen werden.

Vielleicht ist die Montage Plugin können Sie helfen, wenn die Endverpackung oben EAR und Platz gemeinsame Gläser gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top