So aktivieren Sie ein Maven-Profil in einem abhängigen Modul?

Angenommen ich habe ein Modul A:jar, deren Laufzeit und Zusammenstellung festlegen von Abhängigkeiten, hängt von der JDK-version. In meinem Beispiel habe ich eine pre-jdk6-profile für JAXB API: vor JDK 1.6.0 ich müssen jaxb-api-nnn.jar als compile-Abhängigkeit. Dieses Profil befindet sich A.pom.

Ich habe auch Modul B:war, das hängt davon ab A:jar. Ich möchte in der Lage sein, um dieses Profil zu aktivieren auf einem build-server zu bauen, das JDK 1.5.x lieferbar. Wenn ich ausführen von Maven mit einem bestimmten Profil aktiviert ist, bekomme ich die Meldung:

mvn -Ppre-jdk6-profile -o install
[WARNING]
        Profile with id: 'pre-jdk6-profile' has not been activated.

sowie jaxb-api-nnn.jar fehlt in dem resultierenden B.war. Allerdings wenn ich aktivieren Sie dieses Profil, wenn Gebäude von der übergeordneten pom.xml ist alles OK. Das bedeutet, dass die profile nicht geerbt von Abhängigkeiten, und die übergeordnete multi-Modul pom.xml war in der Lage zu bauen ist alles richtig, weil es scheint, wie alle profile zusammengeführt, die im Reaktor.

Verschiebung des Profils zu übergeordneten pom macht die Dinge schlimmer, als die Abhängigkeiten angewendet werden, um alle anderen Projekte (z.B. C:ear). Gibt es schön Lösungen für diese Aufgabe, nämlich dann, wenn jedes Modul A hängt Modul B, dann alle Kompilier-und Laufzeit-Abhängigkeiten werden aktiviert, indem Sie ein Profil, werden nun korrekt behandelt?

Des Profils im Projekt - A:jar folgt:

<project ...>
    <artifactId>A</artifactId>
    <packaging>jar</packaging>
    ...
    <parent>
        <artifactId>P</artifactId>
        ...
    </parent>

    <profiles>
        <profile>
            <id>pre-jdk6-profile</id>

            <activation>
                <jdk>(,1.6.0)</jdk>
            </activation>

            <dependencies>
                <dependency>
                    <groupId>javax.xml.ws</groupId>
                    <artifactId>jaxws-api</artifactId>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
...
</project>
InformationsquelleAutor dma_k | 2010-08-20
Schreibe einen Kommentar