Ich habe folgendes Szenario vereinfacht:Wie kann ich Abhängigkeiten eines Projekts verwenden, das als bereitgestellt markiert wurde?
projectX ---> projectA ---> projectB
Wo --->
bedeutet "abhängig von".
ProjectB ist wirklich einfach. Es erklärt keine Abhängigkeiten. dies ist in der Tat der einzige relevante Teil:
<packaging>jar</packaging>
in pom.xml von projectA ich die Abhängigkeit zu ProjectB erklärt haben:
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>projectB</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Und in pom.xml von projectX ich habe:
Das Problem ist, dass ProjectX Komponenten (Klassen und solche) verwenden muss, die in ProjektB definiert sind. Wenn ich den Bereich in ProjektA ändern, um compile
für ProjektB zu verwenden, wird alles funktionieren, aber dann wird ProjectB einbezogen, wenn der Krieg in ProjectX generiert wird, und ich muss diese Bibliothek aus dem generierten Krieg haben, da ich ProjectB in anderen zur Verfügung stelle Teil des Projekts. Im realen Szenario habe ich mehrere Abhängigkeiten wie projectB, die sich auf projectA auswirken. Um also die Größe des erzeugten Krieges zu reduzieren, möchte ich sie als zur Verfügung gestellt setzen, aber dann kann projectX die in diesen definierten Komponenten nicht verwenden Bibliotheken. Beispiel für Komponenten: Spring, Hibernate, usw.
Frage: Gibt es eine Möglichkeit, dies in einer sauberen Art und Weise zu erreichen, ohne erneut erklären Abhängigkeiten in vielen Orten?
Die angegebenen Abhängigkeiten sind nicht transitiv http://stackoverflow.com/questions/34904558/why-arent-provided-maven-dependencies-transitive/. Es ist so in Maven gebaut und es wird sich wahrscheinlich nie ändern. – Tunaki
@Tunaki das ist die Motivation für diese Frage (: –
Ja, aber das ist die Schlussfolgerung hier: * Es ist falsch, eine Abhängigkeit zu verwenden, die du nicht deklarierst. * Siehe meine Antwort da drüben, es gibt einen Fehlerbericht dafür. Ich muss es explizit erklären. – Tunaki