2016-08-04 32 views
0

Wie kann ich j2ee Projekt mit Maven mit Glassfish 4 als Ziellaufzeit erstellen?Maven Archetype für Glassfish Laufzeit

Ich benutze Eclipse Mars. Ich folge dem Assistenten 'Dynamisches Webprojekt' und wähle glassfish 4 als 'Target runtime'. Wenn der Assistent beendet ist, öffne ich das Projekt und unter den Java-Ressourcen der Knoten -> Bibliotheken kann ich das glassfish-Systembibliothek-Bundle sehen.

Jetzt würde ich das gleiche Projekt mit Maven erstellen. Ich habe nach einem Archetyp gesucht, der mir das gleiche Bibliothekspaket gibt, um Probleme bei der Bereitstellung zu vermeiden, aber ich habe kein endgültiges gefunden. Je näher scheint die jersey-quickstart-webapp zu sein, aber wenn ich auf die Abhängigkeiten schaue, sind das nur ein paar Dinge, die mit der glassfish-Laufzeit zu tun haben. Es ist möglich? Es klingt komisch für mich, vielleicht mache ich Fehler, folge ich der richtigen Herangehensweise?

Danke.

Antwort

0

Das Beste, was ich mit war dies einfiel:

mvn archetype:generate -DgroupId=mygroup -DartifactId=myapp -Dversion=1.0-SNAPSHOT 
     -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=webapp-javaee7 

Wo mygroup und myapp Ihre sind zu bestimmen.

Dann in der generierten pom.xml, fügen Sie diese Eigenschaft (im Eigenschaften-Element):

<glassfish.version>4.1.1</glassfish.version> 

den endgültigen Namen im Build-Element-Set (wir werden darauf verweisen kurz):

<finalName>myapp</finalName> 

Dann dieses Plugin fügen Sie den Glassfish eingebettete Laufzeit zu konfigurieren, in dem Plugin-Element:

<plugin> 
    <groupId>org.glassfish.embedded</groupId> 
    <artifactId>maven-embedded-glassfish-plugin</artifactId> 
    <version>${glassfish.version}</version> 
    <configuration> 
     <autoDelete>true</autoDelete> 
     <ports> 
      <http-listener>8080</http-listener> 
      <https-listener>8181</https-listener> 
     </ports> 
    </configuration> 
    <executions> 
     <execution> 
      <id>deploy</id> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      <phase>none</phase> 
      <configuration> 
       <app>target/${project.build.finalName}.war</app> 
       <contextRoot>/${project.build.finalName}</contextRoot> 
      </configuration> 
     </execution> 
     <execution> 
      <id>admin</id> 
      <goals> 
       <goal>admin</goal> 
      </goals> 
      <phase>none</phase> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.main.extras</groupId> 
      <artifactId>glassfish-embedded-all</artifactId> 
      <version>${glassfish.version}</version> 
     </dependency> 
    </dependencies> 
</plugin> 

Ich benutze dann mvn clean install embedded-glassfish:run, um den Server mit einer neu erstellten Anwendung auszuführen.

Ich hoffe, Sie mögen es.

+0

Ich habe den Archetyp vom Codehaus verworfen, weil Codehaus alle Dienste beendet hat. Ihr Code ist jedoch ein guter Ausgangspunkt. Ich werde es studieren und mein Maven-Wissen erweitern. Vielen Dank. – user3253833