Frage

In unserem Maven Projekt haben wir die folgende Verzeichnisstruktur versuchen (mit etwa 80 Projekten insgesamt nur wenige sind so gezeigt, dass man auf die Idee kommen):

myappli      (pom)
-- module1       (pom)
--|-- utils    (pom)
--|-- ejb       (pom)
--|--|-- myappli-module1-a-ejb    (jar)
--|--|-- myappli-module1-b-ejb    (jar)
--|-- war       (pom)
--|-- applet       (pom)
...
-- module6       (pom)
--|-- utils       (pom)
--|-- ejb       (pom)
--|--|-- myappli-module6-c-ejb    (jar)
--|-- war       (pom)
--|-- applet       (pom)
  

Hinweis: Dies ist eine Wohnung Struktur für Maven, da alle Nicht-Blatt-Projekte einen packaging Wert von "pom" haben. (Cf BetterBuildsWithMaven Buch).

Wir definieren die Abhängigkeit Versionen in "dependencyManagement", in dem "myappli" pom. Dies funktioniert gut.

Unser Problem ist mit der Wiederverwendung der Abhängigkeiten selbst . Zum Beispiel sind die ejb-Abhängigkeiten für alle ejb Projekte (mit Absicht) gemeinsam. Wir wollen nicht CUT'N-Paste, und hält alles, was bei jeder Änderung!

Wir dachten einige verwenden „ Import Begriff “ für die ejb Abhängigkeiten und unsere ejb Abhängigkeiten einmal auf der Anwendungsebene definieren. Unsere erfolglose Versuche waren:

  • Die Maven „parent pom“ Idee wäre in Ordnung, aber es ist bereits von den Modulen verwendet, so dass es nicht für unsere Anforderung ist.
  • Keine Importfunktion in Maven (außer dependencyManagement)
  • XML-Entity-Definition wird nicht erkannt. Wir haben versucht, ein pom wie die folgenden, und bekam den Fehler
    "Reason: Parse error reading POM. Reason: could not resolve entity named 'ejbDependencies'":

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE project [
      <!ENTITY ejbDependencies SYSTEM "./ejbDependencies.txt">
    ]>
    <project ...
    ...
    &ejbDependencies;
    ...


Edited : Ich habe die Lösung Ich versuche von Robert vorgeschlagen, aber etwas falsch ist.

Wenn ich meine ejb Projekt übersetzen, finden nicht die Abhängigkeiten selbst. Ich erhalte eine Fehlermeldung, wenn (MVN Kompilierung) kompilieren, sagen die javax.ejb Paket fehlt.

  

. Hinweis: Ich habe laufen „MVN installieren“ auf den Abhängigkeiten, bevor das Projekt

Das ist meine Konfiguration:

<project ...>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.company</groupId>
    <artifactId>myproj-maven</artifactId>
    <version>3.1-SNAPSHOT</version>
  </parent>

  <groupId>com.company</groupId>
  <artifactId>myproj-maven-ejb</artifactId>
  <version>${myproj-version}</version>
  <packaging>pom</packaging>

  <dependencies>
    <dependency>
      <groupId>javax.ejb</groupId>
      <artifactId>ejb</artifactId>
    </dependency>

    <dependency>
      <groupId>ojdbc</groupId>
      <artifactId>ojdbc</artifactId>
    </dependency>
  </dependencies>
</project>

---------------------------------
<project ...>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.company</groupId>
    <artifactId>myproj-identite-ejb</artifactId>
    <version>3.1-SNAPSHOT</version>
  </parent>

  <groupId>com.company</groupId>
  <artifactId>myproj-identite-metier</artifactId>
  <name>SNR IDENTITE METIER</name>
  <version>2.0.1</version>
  <packaging>ejb</packaging>

  <dependencies>
    <dependency>
      <groupId>com.company</groupId>
      <artifactId>myproj-maven-ejb</artifactId>
      <version>${myproj-version}</version>
      <type>pom</type>
    </dependency>
  </dependencies>
</project>

Ich weiß nicht, ob es sich etwas ändert, aber wir haben eine Hierarchie, die die beiden Poms bezieht.
Wir haben eine strenge Maven-Struktur, wobei jedes Verzeichnis alle Unterverzeichnisse als maven Module deklariert und jedes Unterverzeichnis erklärt die Eltern als Maven Elternteil.
Und das gemeinsame übergeordnete Verzeichnis Teil dieser Struktur ist.

+---maven
|   \---ejb
+---identite
|   +---ejb
|   |   \---SNR_IDENTITE_METIER

Edited :

Die Antwort von Riff gegeben scheint richtig. Es ist unmöglich, mit Maven zu tun, weil unsere Abhängigkeit vorgesehen ist und daher nicht transitiv: - (

  

Wir haben wirklich viele Probleme mit dem Setup auf Maven. So viele kleine Dinge tun, nur nicht arbeiten. Heute habe ich herausgefunden, dass die Website Zieleigenschaften nicht verarbeiten können, dass wir für die Versionsnummern verwenden!

War es hilfreich?

Lösung

Haben Ihre importierten Abhängigkeiten haben ein zur Verfügung gestellt Anwendungsbereich? Tatsächlich dieser Bereich ist nicht transitiv (siehe Maven Abhängigkeit Scopes ).

Dies ist der Grund des Nicht-Ersatz sein könnte.

Andere Tipps

Sie können mit pom Abhängigkeiten , um Importabhängigkeiten in beliebige Projekte.

Ein pom Projekt kann wie folgt aussehen:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>persistence-deps</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>

  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate</artifactId>
      <version>${hibernateVersion}</version>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-annotations</artifactId>
      <version>${hibernateAnnotationsVersion}</version>
    </dependency>
  </dependencies>
</project>

Und wird importiert als:

<dependency>
  <groupId>com.example</groupId>
  <artifactId>persistence-deps</artifactId>
  <version>1.0</version>
  <type>pom</type>
</dependency>

Siehe Maven, die endgültige führen -. Gruppierung Abhängigkeiten Details

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