6 Stimmen

Jar in Abhängigkeit von Klassen im Kriegsprojekt

Angenommen, ich habe ein war- und ein jar-Projekt in Maven definiert.

Das Jar-Projekt ist abhängig vom War-Projekt

Ich habe es geschafft, dies im Paketmodus zu erreichen, indem ich Folgendes hinzugefügt habe

In dem Kriegsprojekt <attachClasses> zu wahr in den Krieg einstecken.

Und die Herstellung einer Abhängigkeit zu

        <groupId>com</groupId>
        <artifactId>oneway-delegator</artifactId>
        <version>1.0</version>
        <classifier>classses</classifier>

in das Glas pom.

Aber wenn ich nur kompiliere, wird das Klassen-Jar nicht erstellt und alles schlägt fehl.

Irgendwelche Ideen, Leute?

12voto

Pascal Thivent Punkte 548176

Aber wenn ich nur kompiliere, wird das Klassen-Jar nicht erstellt und alles schlägt fehl.

Sie können das maven-war-plugin in der Tat so konfigurieren, dass es die Klassen und Ressourcen, die in Ihrer Webapp enthalten sind, als "angehängtes" JAR-Artefakt mit einem Classifier mit der folgenden Konfiguration verpackt/ausliefert:

<project>
  ...
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>X.Y</version>
        <configuration>
          <attachClasses>true</attachClasses>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

Dieses Artefakt wird jedoch während der package Phase. Erwarten Sie also nicht, dass es dort zu finden ist, wenn Sie die compile nur.

Beachten Sie, dass diese Konfigurationsoption für einen ganz bestimmten Anwendungsfall eingeführt wurde, nämlich für den "Skinny War"-Fall. Wenn Sie dieses JAR in einem anderen Projekt wiederverwenden müssen, wird im Allgemeinen empfohlen, die Klassen in ein separates Modul zu verschieben, das ein JAR erstellt, und dann eine Abhängigkeit von diesem JAR von Ihrer Webapp sowie von allen anderen Projekten zu deklarieren, die es benötigen.

7voto

Robin Punkte 23622

Tun Sie das nicht.

Es ist keine akzeptable Abhängigkeit, ein jar (einfacher Java-Code) von einem war (Java EE-spezifisches Anwendungspaket) abhängig zu machen. Wenn Sie Code in Ihrem War haben, von dem Sie abhängig sind, dann sollte dieser Code in einem eigenen Jar sein und dann würden sowohl die Web-App als auch das Jar-Projekt eine gemeinsame Abhängigkeit davon haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X