Build EJB3 with Maven 2
I'm Maven newbie. I'm very happy that I have found a way to compile EJB 3 with Maven. Here is my recipe :) Actually it isn't mine (It is came from the book "POJO's in Action" source code example), but I hope that my post will be useful for somebody. Maven is complex and it is something like new religion ;)
I have JBoss EJB 3 embeddable alpha and want to built my EJBs with Maven 2. What should I do ? The way of adding some third-party jars is a kind of challenge :) Official docs is here. In practice it's looks like this :
set EJB3_LIB=C:\server\jboss-EJB-3.0_Embeddable_ALPHA\libAnd then a lot of almost identical calls for every jar file in EJB3_LIB directory. Full *.cmd file is long and I don't want to list it here.
call mvn install:install-file
-DgeneratePom=true
-Dfile=%EJB3_LIB%\antlr-2.7.5H3.jar
-DgroupId=jboss-ejb3-embeddable_alpha3
-DartifactId=antlr-2.7.5H3
-Dversion=1.0alpha3 -Dpackaging=jar
Resulting POM file is :
<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>com.mycoolcompany</groupId>
<artifactId>Maven2-EJB3-Compile</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>EJB 3 Compile with Maven 2</name>
<url>http://localhost</url>
<dependencies>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>antlr-2.7.5H3</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>asm-attrs</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>asm</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>cglib-2.1.1</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>commons-collections</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>concurrent</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>dom4j</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>ejb3-persistence</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>hibernate3</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>hsqldb</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>javassist</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-aop-jdk50</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-aspect-library-jdk50</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-common-jdbc-wrapper</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-common</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-container</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-dependency</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-ejb3</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-ejb3x</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-j2ee</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-j2se</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-jca</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-local-jdbc</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-microcontainer</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-remoting</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-system</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-transaction</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss-xa-jdbc</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jboss</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jbossmq</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jbosssx</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>jnpserver</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>log4j</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>resolver</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>trove</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>xercesImpl</artifactId>
<version>1.0alpha3</version>
</dependency>
<dependency>
<groupId>jboss-ejb3-embeddable_alpha3</groupId>
<artifactId>xml-apis</artifactId>
<version>1.0alpha3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Don't tell me that maven is easier than Ant... I hope that there is a more elegant
way to build EJBs with Maven.
UPD
Complete example with source code is here : http://code.google.com/p/ostas-blog-src/
