Hallo,
habe heute meine ersten Versuche mit Maven (Eclipse m2e Plugin mit embedded maven) gemacht. Zum Kennenlernen will ich drei Projekte erzeugen:
1. Projekt wird einen kleinen Service besitzen, welcher per EJB injected werden soll --> JAR File
2. Projekt soll gerad eine kleine Webanwendung sein, die den Service anspricht... --> WAR File
3. Enterprise Application Project beinhaltet die Projekte 1 und 2 und gegebenenfalls weitere benötigte 3rd Party Jar's
Also alles so auf HelloWorld Ebene. Das eigentliche Bauen / die eigentliche Verwendung mit Maven steht hier im Vordergrund.
Jetzt aber zu meiner Frage:
Ich habe mir für Projekt 1 ein neues Maven Projekt angelegt. Nun benötige ich für zB @Stateless zum Annotieren der EJB die zugehörige library, damit Eclipse die kennt. Der JavaEE Server ( hier ein JBoss AS 7.1 ) beinhaltet ja die zugehörigen lib's, welche letztendlich zur Laufzeit des Deployments verwendet werden. Nun hab ich ja klassisch mit Eclipse die Möglichkeit, beim Build-Path eine Server-Runtime-Library anzulegen (Also meine lokale JBoss 7.1 Runtime). Damit würde Eclipse alle libs kennen, die vom AppServer zur Verfügung gestellt werden.
Sagen wir mal, das Projekt soll nun ein anderer Entwickler mit betreuen, dann hätte dieser ja auch die Pflicht, diese Runtime lokal zu haben um eine fehlerfreie Umgebung zu haben.
Das muss doch auch mit maven gehen. Also jetzt zB. irgendne Hibernate JPA2 lib einzubinden, die sich event. von der vom AppServer zur Verfügung gestellten lib unterscheidet, finde ich sub-optimal.
Nun hab ich schonmal Folgendes gefunden: Importing JBoss 7 Bundled Dependency Versions Through Maven
Das geht ja schonmal in die Richtung (Auszug):
[XML]<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-parent</artifactId>
<version>7.1.0.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>[/XML]
Hier muss man nun trotzdem noch die benötigten Abhängigkeiten angeben (Auszug):
[XML]<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>[/XML]
Ok. Aber jetzt steh ich vor dem Problem mit der oben besagten @stateless Annotation. Wie findet man nun die korrekte Dependency raus?
Gibt es andere Wege, wie man an alle zur Verfügung gestellten Lib's eines AppServers rankommt? Wie in meinem Fall an alle libs, die der JBoss zur Verfügung stellt? Mir ist schon klar, dass es sich um ein paar mehr libs handelt, aber somit muss ich nicht gezielt die Abhängigkeiten mühsam suchen, da die eh nur "provided" werden?
Wie geht ihr so vor? Ich bin gespannt...
habe heute meine ersten Versuche mit Maven (Eclipse m2e Plugin mit embedded maven) gemacht. Zum Kennenlernen will ich drei Projekte erzeugen:
1. Projekt wird einen kleinen Service besitzen, welcher per EJB injected werden soll --> JAR File
2. Projekt soll gerad eine kleine Webanwendung sein, die den Service anspricht... --> WAR File
3. Enterprise Application Project beinhaltet die Projekte 1 und 2 und gegebenenfalls weitere benötigte 3rd Party Jar's
Also alles so auf HelloWorld Ebene. Das eigentliche Bauen / die eigentliche Verwendung mit Maven steht hier im Vordergrund.
Jetzt aber zu meiner Frage:
Ich habe mir für Projekt 1 ein neues Maven Projekt angelegt. Nun benötige ich für zB @Stateless zum Annotieren der EJB die zugehörige library, damit Eclipse die kennt. Der JavaEE Server ( hier ein JBoss AS 7.1 ) beinhaltet ja die zugehörigen lib's, welche letztendlich zur Laufzeit des Deployments verwendet werden. Nun hab ich ja klassisch mit Eclipse die Möglichkeit, beim Build-Path eine Server-Runtime-Library anzulegen (Also meine lokale JBoss 7.1 Runtime). Damit würde Eclipse alle libs kennen, die vom AppServer zur Verfügung gestellt werden.
Sagen wir mal, das Projekt soll nun ein anderer Entwickler mit betreuen, dann hätte dieser ja auch die Pflicht, diese Runtime lokal zu haben um eine fehlerfreie Umgebung zu haben.
Das muss doch auch mit maven gehen. Also jetzt zB. irgendne Hibernate JPA2 lib einzubinden, die sich event. von der vom AppServer zur Verfügung gestellten lib unterscheidet, finde ich sub-optimal.
Nun hab ich schonmal Folgendes gefunden: Importing JBoss 7 Bundled Dependency Versions Through Maven
Das geht ja schonmal in die Richtung (Auszug):
[XML]<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-parent</artifactId>
<version>7.1.0.Final</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>[/XML]
Hier muss man nun trotzdem noch die benötigten Abhängigkeiten angeben (Auszug):
[XML]<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>[/XML]
Ok. Aber jetzt steh ich vor dem Problem mit der oben besagten @stateless Annotation. Wie findet man nun die korrekte Dependency raus?
Gibt es andere Wege, wie man an alle zur Verfügung gestellten Lib's eines AppServers rankommt? Wie in meinem Fall an alle libs, die der JBoss zur Verfügung stellt? Mir ist schon klar, dass es sich um ein paar mehr libs handelt, aber somit muss ich nicht gezielt die Abhängigkeiten mühsam suchen, da die eh nur "provided" werden?
Wie geht ihr so vor? Ich bin gespannt...