codestory

Erstellen Sie ein Multiple-Modul-Projekt mit Maven

  1. Die Vorstellung
  2. Das Modellsbeispiel
  3. Das Projekt MathLibrary erstellen
  4. Das Projekt MathWebApp erstellen
  5. Das Projekt MavenParent erstellen
  6.  Maven die Beziehungen zwischen Projekte erklären
  7. Die Module einpacken

1. Die Vorstellung

Das Dokument wird auf die Quelle von .. geschrieben
  • Eclipse 4.6 (NEON)

Sie sind dabei, das erweiterte Dokument über Maven zu sehen. Wenn Sie als den Anfänger mit Maven sind, sollen Sie die Führungsdokument der Maven für die Anfänger (Hello world Maven) sehen bei :

2. Das Modellsbeispiel

Das ist die Modelle des Beispiel im Dokument
Das Ziel von der Führung ist:
  1. Wie benuzt eine Module die andere Module in Maven
  2. zugleiche Einpackung der unterschiedlichen Module durch Maven (output file: jar, war).
MathWebApp: ist ein Project WebApp
MathLibrary: ist ein Project Bibliothek , die die Utility- Class enthaltet, die von MathWebApp.benutzt

MavenParent: ist ein Project mit der Aufgabe zur Einpackung der 2 oben Projekt. Das ist ein Vater Projekt. Und die 2 oben Projekt werden als seine Tochtermodule gesehen. MavenParent wird
  • Einpackung der MathLibary zur File jar
  • Einpackung der MathWebApp zur File war.

3. Das Projekt MathLibrary erstellen

  • File/New/Other...
Das ist ein einfachers Project. Wir sollen das Archetyp (archetype) Maven nicht wählen

Wählen Sie
  • Create a simple project (skip archetype selection)
Geben Sie ein
  • Group Id: org.o7planning
  • Artifact Id: MathLibrary
  • Packaging: jar
Ignorieren Sie die Information der Vater Module und wir werden es später installieren.
Das Project wird erstellt
Erstellen Sie eine Class MathUtils:
MathUtils.java
package org.o7planning.mathutils;

public class MathUtils {

  public static int sum(int a, int b) {
      return a + b;
  }

}

4. Das Projekt MathWebApp erstellen

  • File/New/Other..
Wählen Sie das Archetyp (archetype) maven-archetype-webapp. Eclipse werden ein Project Maven erstellen, das die Struktur von einer Web Applikation hat
Geben Sie ein
  • Group Id: org.o7planning
  • Artifact Id: MathWebApp
  • Version: 0.0.2-SNAPSHOT
  • Package: org.o7planning.mathwebapp
Das ist die Foto von dem erstellten Project MathWebApp . Sie können die Nachricht des Fehler irgendwo im Project sehen. Sorgen Sie nicht dafür. Die Ursache ist, dass Sie die Bibliothek Servlet noch nicht anmelden
Eclipse , die das Project erstellt hat, kann die falsche Struktur haben. Sie sollen testen
  • Open file pom.xml
Ergänzen Sie
<dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>javax.servlet-api</artifactId>
 <version>3.1.0</version>
 <scope>provided</scope>
</dependency>
Wie das folgende Beispiel
jetzt geht der Fehler weg
melden Sie mit Maven weiter an, MathWebApp benutzt MathLibrary:
<dependency>
   <groupId>org.o7planning</groupId>
   <artifactId>MathLibrary</artifactId>
   <version>0.0.1-SNAPSHOT</version>
</dependency>
MathWebApp/pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.o7planning</groupId>
  <artifactId>MathWebApp</artifactId>
  <packaging>war</packaging>
  <version>0.0.2-SNAPSHOT</version>
  <name>MathWebApp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
      </dependency>


      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>
     
      <dependency>
          <groupId>org.o7planning</groupId>
          <artifactId>MathLibrary</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>        
     
  </dependencies>
  <build>
      <finalName>MathWebApp</finalName>
  </build>
</project>
Benutzen Sie die Utility- Class ins Project MathLibrary um die File index.jsp zu ändern
index.jsp
<html>
<body>
<h2>Hello World!</h2>

<%

int a = 100;
int b = 200;

int c = org.o7planning.mathutils.MathUtils.sum(a,b);

out.println("<h2>"+ c+"</h2>");

%>

</body>
</html>

5. Das Projekt MavenParent erstellen

Erstellen Sie ein normales Project
  • File/New/Other..
Klicken Sie die Rechtsmaustaste ins erstellte Project MavenParent und dann wandeln Sie (convert) es zum Maven Project um
Geben Sie ein
  • Group Id: org.o7planning
  • Artifact Id: MavenParent
  • Version: 1.0.0-SNAPSHOT
  • Packaging: pom

6.  Maven die Beziehungen zwischen Projekte erklären

Das ist die kurze Bezeichnung der Konfigurierung der Maven und die Beziehungen zwischen die module (Project).
Öffnen Sie die File pom.xml von 2 project MathLibrary & MathWebApp und dann wählen Sie:
<parent>
   <groupId>org.o7planning</groupId>
   <artifactId>MavenParent</artifactId>
   <version>1.0.0-SNAPSHOT</version>
   <relativePath>../MavenParent/pom.xml</relativePath>
</parent>
Öffnen Sie die File pom.xml von MavenParent und ergänzen Sie:
<modules>
  <module>../MathLibrary</module>
  <module>../MathWebApp</module>
</modules>
MathLibrary/pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>org.o7planning</groupId>
 <artifactId>MathLibrary</artifactId>
 <version>0.0.1-SNAPSHOT</version>


 <parent>
     <groupId>org.o7planning</groupId>
     <artifactId>MavenParent</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <relativePath>../MavenParent/pom.xml</relativePath>
 </parent>

</project>
MathWebApp/pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.o7planning</groupId>
  <artifactId>MathWebApp</artifactId>
  <packaging>war</packaging>
  <version>0.0.2-SNAPSHOT</version>
  <name>MathWebApp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
      </dependency>


      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
      </dependency>

      <dependency>
          <groupId>org.o7planning</groupId>
          <artifactId>MathLibrary</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>

  </dependencies>

  <parent>
      <groupId>org.o7planning</groupId>
      <artifactId>MavenParent</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <relativePath>../MavenParent/pom.xml</relativePath>
  </parent>

  <build>
      <finalName>MathWebApp</finalName>
  </build>
</project>
MavenParent/pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.o7planning</groupId>
  <artifactId>MavenParent</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>


  <modules>
      <module>../MathLibrary</module>
      <module>../MathWebApp</module>
  </modules>

</project>

7. Die Module einpacken

Klicken Sie die Rechtmaustaste ins Project MavenParent und dann wählen Sie :
  • Run As/Maven install.
Das Ergebnis