2016-07-07 9 views
1

Ich habe ein Projekt Eclipse, die einen Verweis auf ein anderes Projekt hat.
Ich habe dieses andere Projekt in den "Eigenschaften" -> "Java Build Path" und in "Eigenschaften" -> "Deployment Assembly" für die Bereitstellung auf einem Server im Eclipse-Arbeitsbereich definiert.
Diese Konfiguration enthält ein Jar des externen Projekts im Verzeichnis WEB-INF/lib.Include externe Eclipse-Projekt in maven generiert Krieg als Jar

Jetzt möchte ich eine WAR-Datei mit dem (Rechtsklick) "Ausführen als" -> "Maven installieren" -Befehl erzeugen.

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
     <webappDirectory>${project.build.directory}/${project.artifactId}</webappDirectory> 
     <warName>${project.artifactId}_${noVer}</warName> 
     <archive> 
      <addMavenDescriptor>false</addMavenDescriptor> 
      <manifest> 
       <addClasspath>false</addClasspath> 
      </manifest> 
      <manifestEntries/> 
      <manifestFile/> 
     </archive> 
    </configuration> 
</plugin> 

Ist es möglich, das andere Projekt als ein Glas schließen (automatisch) im Krieg: die Maven-ist-Plugin Plugin im pom
Ich habe hinzugefügt?

Vielen Dank.

EDIT

Das "anderes Projekt" ist ein Eclipse-Projekt im selben Arbeitsbereich.
Eigentlich ist ein maven jar Projekt.
Es ist im ursprünglichen Projekt wie zuvor beschrieben enthalten.
Was ich wissen möchte ist:
Gibt es eine Möglichkeit (Plugin, Direktive ...), dieses ECLIPSE-Projekt direkt in den Pom des ursprünglichen Projekts aufzunehmen?
so etwas wie

<dependency> 
    <groupId>org.myproject</groupId> 
    <artifactId>other_eclipse_project</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</dependency> 

und dann ein "other_eclipse_project.jar" in WEB-INF/lib

+0

Ich verstehe, dass die „andere Projekt“ ist kein Maven Projekt. Richtig? – JimHawkins

+0

Sollte ein anderes Eclipse Maven Projekt sein – notting65

Antwort

0

findet ich empfehlen, dass Sie die JAR-Datei von dem "anderen Projekt" in Ihrer lokalen Maven-Repository installieren. Verwenden Sie dazu das maven install plugin. Es gibt einige Varianten:

  1. ein pom.xml für „anderes Projekt“ erstellen und mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile> nennen. Geben Sie im POM für "anderes Projekt" seine Abhängigkeiten an.
  2. die Maven angeben Koordinaten als Parameter: mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=jar

Wenn Sie Variante wählten 2 können Sie nicht (AFAIK) angeben Abhängigkeiten von „anderen Projekt“.

Wenn Sie dies getan haben, können Sie in Ihrem Maven-Projekt eine Abhängigkeit zu "anderes Projekt" hinzufügen.

Siehe Install non-maven artifact in local repository

1

Ulrich Antwort richtig ist auch, aber es wird nur das Glas von dem anderen Projekt in Ihren Krieg erzeugt hinzuzufügen. Wenn Ihr anderes Projekt von anderen Gläsern abhängig ist, werden diese nicht berücksichtigt.

Ich wäre versucht, das andere Projekt zu einem Maven-Projekt zu ändern und alle seine Abhängigkeiten zu seinem Pom hinzuzufügen, so dass Sie alle transitiven Abhängigkeiten erhalten.

+0

Ich stimme zu. Als ich meine Antwort schrieb, war mir klar, dass es nur eine externe Bibliothek ("anderes Projekt") gibt, die nicht als Mavenabhängigkeit existiert. – JimHawkins

0

Vielleicht meinen Sie, dass Eclipse eine Maven-Abhängigkeit direkt vom Arbeitsbereich abrufen kann. Diese Funktion heißt "Workspace Resolution". Öffnen Sie das Kontextmenü auf "MyApp" und in "Maven" können Sie die Auflösung des Arbeitsbereichs aktivieren. In Eclipse Mars ist es standardmäßig deaktiviert (AFAIK).

enter image description here