Last active
August 29, 2015 14:07
-
-
Save rafaeltuelho/81a0ca327f871b0d777e to your computer and use it in GitHub Desktop.
Maven POM example for JBoss EAP/Wildfly JavaEE 6 projects. Includes JBoss EAP and Arquillian BOMs (Maven JBoss/JavaEE 6 standard definitions)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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>br.net.rafaeltuelho</groupId> | |
<artifactId>unit1</artifactId> | |
<version>0.0.1-SNAPSHOT</version> | |
<description>JB297 Training</description> | |
<developers> | |
<developer> | |
<name>Rafael T. C. Soares</name> | |
<email>rafaelcba at gmail dot com</email> | |
</developer> | |
</developers> | |
<packaging>war</packaging> | |
<name>unit1</name> | |
<url>http://maven.apache.org</url> | |
<properties> | |
<!-- Explicitly declaring the source encoding eliminates the following | |
message: --> | |
<!-- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered | |
resources, i.e. build is platform dependent! --> | |
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
<!-- JBoss dependency versions --> | |
<version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin> | |
<!-- Define the version of the JBoss BOMs we want to import to specify | |
tested stacks. --> | |
<version.jboss.bom.eap>6.2.0.GA</version.jboss.bom.eap> | |
<version.jboss.as>7.3.0.Final-redhat-14</version.jboss.as> | |
<!-- other plugin versions --> | |
<version.war.plugin>2.1.1</version.war.plugin> | |
<!-- maven-compiler-plugin --> | |
<maven.compiler.target>1.6</maven.compiler.target> | |
<maven.compiler.source>1.6</maven.compiler.source> | |
</properties> | |
<dependencyManagement> | |
<dependencies> | |
<!-- JBoss distributes a complete set of Java EE 6 APIs including a Bill | |
of Materials (BOM). A BOM specifies the versions of a "stack" (or a collection) | |
of artifacts. We use this here so that we always get the correct versions | |
of artifacts. Here we use the jboss-javaee-6.0-with tools stack (you can | |
read this as the JBoss stack of the Java EE 6 APIs, with some extras tools | |
for your project, such as Arquillian for testing) --> | |
<dependency> | |
<groupId>org.jboss.bom.eap</groupId> | |
<artifactId>jboss-javaee-6.0-with-tools</artifactId> | |
<version>${version.jboss.bom.eap}</version> | |
<type>pom</type> | |
<scope>import</scope> | |
</dependency> | |
<dependency> | |
<groupId>org.jboss.bom.eap</groupId> | |
<artifactId>jboss-javaee-6.0-with-hibernate</artifactId> | |
<version>${version.jboss.bom.eap}</version> | |
<type>pom</type> | |
<scope>import</scope> | |
</dependency> | |
</dependencies> | |
</dependencyManagement> | |
<dependencies> | |
<!-- First declare the APIs we depend on and need for compilation. All | |
of them are provided by JBoss EAP 6 --> | |
<!-- Import the CDI API, we use provided scope as the API is included in | |
JBoss EAP 6 --> | |
<dependency> | |
<groupId>javax.enterprise</groupId> | |
<artifactId>cdi-api</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!-- Import the Common Annotations API (JSR-250), we use provided scope | |
as the API is included in JBoss EAP 6 --> | |
<dependency> | |
<groupId>org.jboss.spec.javax.annotation</groupId> | |
<artifactId>jboss-annotations-api_1.1_spec</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!-- dependency> <groupId>org.jboss.spec.javax.servlet</groupId> <artifactId>jboss-servlet-api_3.0_spec</artifactId> | |
<scope>provided</scope> </dependency --> | |
<!-- Import the JAX-RS API, we use provided scope as the API is included | |
in JBoss EAP 6 --> | |
<dependency> | |
<groupId>org.jboss.spec.javax.ws.rs</groupId> | |
<artifactId>jboss-jaxrs-api_1.1_spec</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!-- Import the JPA API, we use provided scope as the API is included in | |
JBoss EAP 6 --> | |
<dependency> | |
<groupId>org.hibernate.javax.persistence</groupId> | |
<artifactId>hibernate-jpa-2.0-api</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!-- Import the EJB API, we use provided scope as the API is included in | |
JBoss EAP 6 --> | |
<dependency> | |
<groupId>org.jboss.spec.javax.ejb</groupId> | |
<artifactId>jboss-ejb-api_3.1_spec</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!-- JSR-303 (Bean Validation) Implementation --> | |
<!-- Provides portable constraints such as @Email --> | |
<!-- Hibernate Validator is shipped in JBoss EAP 6 --> | |
<dependency> | |
<groupId>org.hibernate</groupId> | |
<artifactId>hibernate-validator</artifactId> | |
<scope>provided</scope> | |
<exclusions> | |
<exclusion> | |
<groupId>org.slf4j</groupId> | |
<artifactId>slf4j-api</artifactId> | |
</exclusion> | |
</exclusions> | |
</dependency> | |
<!-- Import the JSF API, we use provided scope as the API is included in | |
JBoss EAP 6 --> | |
<dependency> | |
<groupId>org.jboss.spec.javax.faces</groupId> | |
<artifactId>jboss-jsf-api_2.1_spec</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!--Import dependencies to hibernate packages(eg. hibernate-core) depending | |
on features you want to use like Hibernate Session used in the quickstart --> | |
<!--please note that scope is provided as these jars are shipped with as7 --> | |
<dependency> | |
<groupId>org.hibernate</groupId> | |
<artifactId>hibernate-core</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
<!-- Now we declare any tools needed --> | |
<!-- Annotation processor to generate the JPA 2.0 metamodel classes for | |
typesafe criteria queries. | |
NOTE: if using JBoss Tools (JBDS) and your project uses JPA Facet the metamodel will be generated automatically. So thi dep. must be commented! | |
<dependency> | |
<groupId>org.hibernate</groupId> | |
<artifactId>hibernate-jpamodelgen</artifactId> | |
<scope>provided</scope> | |
</dependency> | |
--> | |
<!-- Needed for running tests (you may also use TestNG) --> | |
<dependency> | |
<groupId>junit</groupId> | |
<artifactId>junit</artifactId> | |
<scope>test</scope> | |
</dependency> | |
<!-- Arquillian allows you to test enterprise code such as EJBs and Transactional(JTA) | |
JPA from JUnit/TestNG --> | |
<dependency> | |
<groupId>org.jboss.arquillian.junit</groupId> | |
<artifactId>arquillian-junit-container</artifactId> | |
<scope>test</scope> | |
</dependency> | |
<!-- Arquillian Servlet 3.0 protocol --> | |
<dependency> | |
<groupId>org.jboss.arquillian.protocol</groupId> | |
<artifactId>arquillian-protocol-servlet</artifactId> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
<build> | |
<!-- Maven will append the version to the finalName (which is the name | |
given to the generated war, and hence the context root) --> | |
<finalName>${project.artifactId}</finalName> | |
<plugins> | |
<plugin> | |
<artifactId>maven-war-plugin</artifactId> | |
<version>${version.war.plugin}</version> | |
<configuration> | |
<!-- Java EE 6 doesn't require web.xml, Maven needs to catch up! --> | |
<failOnMissingWebXml>false</failOnMissingWebXml> | |
</configuration> | |
</plugin> | |
<!-- The JBoss AS plugin deploys your war to a local JBoss EAP container --> | |
<!-- To use, set the JBOSS_HOME environment variable and run: mvn package | |
jboss-as:deploy --> | |
<plugin> | |
<groupId>org.jboss.as.plugins</groupId> | |
<artifactId>jboss-as-maven-plugin</artifactId> | |
<version>${version.jboss.maven.plugin}</version> | |
</plugin> | |
</plugins> | |
</build> | |
<profiles> | |
<profile> | |
<!-- The default profile skips all tests, though you can tune it to run | |
just unit tests based on a custom pattern --> | |
<!-- Seperate profiles are provided for running all tests, including Arquillian | |
tests that execute in the specified container --> | |
<id>default</id> | |
<activation> | |
<activeByDefault>true</activeByDefault> | |
</activation> | |
<build> | |
<plugins> | |
<plugin> | |
<artifactId>maven-surefire-plugin</artifactId> | |
<configuration> | |
<skip>true</skip> | |
</configuration> | |
</plugin> | |
<!-- The JBoss AS plugin deploys your war to a local JBoss EAP container --> | |
<!-- To use, set the JBOSS_HOME environment variable and run: mvn package | |
jboss-as:deploy --> | |
<plugin> | |
<groupId>org.jboss.as.plugins</groupId> | |
<artifactId>jboss-as-maven-plugin</artifactId> | |
</plugin> | |
</plugins> | |
</build> | |
</profile> | |
<profile> | |
<!-- An optional Arquillian testing profile that executes tests in your | |
JBoss EAP instance --> | |
<!-- This profile will start a new JBoss EAP instance, and execute the | |
test, shutting it down when done --> | |
<!-- Run with: mvn clean test -Parq-jbossas-managed --> | |
<id>arq-jbossas-managed</id> | |
<dependencies> | |
<dependency> | |
<groupId>org.jboss.as</groupId> | |
<artifactId>jboss-as-arquillian-container-managed</artifactId> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
</profile> | |
<profile> | |
<!-- An optional Arquillian testing profile that executes tests in a remote | |
JBoss EAP instance --> | |
<!-- Run with: mvn clean test -Parq-jbossas-remote --> | |
<id>arq-jbossas-remote</id> | |
<dependencies> | |
<dependency> | |
<groupId>org.jboss.as</groupId> | |
<artifactId>jboss-as-arquillian-container-remote</artifactId> | |
<scope>test</scope> | |
</dependency> | |
</dependencies> | |
</profile> | |
</profiles> | |
</project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Some important notes to run your Arquillian tests inside Eclipse/JBDS.
http://java.dzone.com/articles/setting-arquillian-run-eclipse
http://www.mastertheboss.com/jboss-frameworks/arquillian/debugging-arquillian-tests