Chapter 1. Creating a Maven project for a hello world application
A Maven project contains a pom.xml
configuration file and has the directory structure required for creating an application. You can configure the pom.xml
configuration file to add dependencies for your application.
To create a Maven project for a hello world application, follow these procedures:
1.1. Creating a Maven project with maven-archetype-webapp
Use the maven-archetype-webapp
archetype to create a Maven project for building applications for JBoss EAP deployment. Maven provides different archetypes for creating projects based on templates specific to project types. The maven-archetype-webapp
creates a project with the structure required to develop simple web-applications.
Prerequisites
- You have installed Maven. For more information, see Downloading Apache Maven.
Procedure
Set up a Maven project by using the
mvn
command. The command creates the directory structure for the project and thepom.xml
configuration file.Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn archetype:generate \ -DgroupId=org.jboss.as.quickstarts \ -DartifactId=helloworld \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-webapp \ -DinteractiveMode=false
$ mvn archetype:generate \ -DgroupId=org.jboss.as.quickstarts \
1 -DartifactId=helloworld \
2 -DarchetypeGroupId=org.apache.maven.archetypes \
3 -DarchetypeArtifactId=maven-archetype-webapp \
4 -DinteractiveMode=false
5 Navigate to the generated directory.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd helloworld
$ cd helloworld
-
Open the generated
pom.xml
configuration file in a text editor. Remove the content inside the
<project>
section ofpom.xml
configuration file after the<name>helloworld Maven Webapp</name>
line.Ensure that the file looks like this:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <?xml version="1.0" encoding="UTF-8"?> <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.jboss.as.quickstarts</groupId> <artifactId>helloworld</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>helloworld Maven Webapp</name> </project>
<?xml version="1.0" encoding="UTF-8"?> <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.jboss.as.quickstarts</groupId> <artifactId>helloworld</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>helloworld Maven Webapp</name> </project>
The content was removed because it is not required for the application.
1.2. Defining properties in a Maven project
You can define properties in a Maven pom.xml
configuration file as place holders for values. Define the value for JBoss EAP server as a property to use the value consistently in the configuration.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Define a property
<version.server>
as the JBoss EAP version on which you will deploy the configured application.Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <version.server>8.0.0.GA-redhat-00009</version.server> </properties> </project>
<project> ... <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <version.server>8.0.0.GA-redhat-00009</version.server> </properties> </project>
Next steps
1.3. Defining the repositories in a Maven project
Define the artifact and plug-in repositories in which Maven looks for artifacts and plug-ins to download.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Define the artifacts repository.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project> ... <repositories> <repository> <id>jboss-public-maven-repository</id> <name>JBoss Public Maven Repository</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> <layout>default</layout> </repository> <repository> <id>redhat-ga-maven-repository</id> <name>Red Hat GA Maven Repository</name> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> <layout>default</layout> </repository> </repositories> </project>
<project> ... <repositories> <repository>
1 <id>jboss-public-maven-repository</id> <name>JBoss Public Maven Repository</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> <layout>default</layout> </repository> <repository>
2 <id>redhat-ga-maven-repository</id> <name>Red Hat GA Maven Repository</name> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> <layout>default</layout> </repository> </repositories> </project>
Define the plug-ins repository.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project> ... <pluginRepositories> <pluginRepository> <id>jboss-public-maven-repository</id> <name>JBoss Public Maven Repository</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>redhat-ga-maven-repository</id> <name>Red Hat GA Maven Repository</name> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>
<project> ... <pluginRepositories> <pluginRepository> <id>jboss-public-maven-repository</id> <name>JBoss Public Maven Repository</name> <url>https://repository.jboss.org/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>redhat-ga-maven-repository</id> <name>Red Hat GA Maven Repository</name> <url>https://maven.repository.redhat.com/ga/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </project>
1.4. Importing the JBoss EAP BOMs as dependency management in a Maven project
Import the JBoss EAP EE With Tools Bill of materials (BOM) to control the versions of runtime Maven dependencies. When you specify a BOM in the <dependencyManagement>
section, you do not need to individually specify the versions of the Maven dependencies defined in the provided
scope.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Add a property for the BOM version in the properties section of the
pom.xml
configuration file.Copy to Clipboard Copied! Toggle word wrap Toggle overflow <properties> .... <version.bom.ee>${version.server}</version.bom.ee> </properties>
<properties> .... <version.bom.ee>${version.server}</version.bom.ee> </properties>
The value defined in the property
<version.server>
is used as the value for BOM version.Import the JBoss EAP BOMs dependency management.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project> ... <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.bom</groupId> <artifactId>jboss-eap-ee-with-tools</artifactId> <version>${version.bom.ee}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
<project> ... <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.bom</groupId>
1 <artifactId>jboss-eap-ee-with-tools</artifactId>
2 <version>${version.bom.ee}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
Next steps
1.5. Adding plug-in management in a Maven project
Add Maven plug-in management section to the pom.xml
configuration file to get plug-ins required for Maven CLI commands.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Define the versions for
wildfly-maven-plugin
andmaven-war-plugin
, in the<properties>
section.Copy to Clipboard Copied! Toggle word wrap Toggle overflow <properties> ... <version.plugin.wildfly>4.1.1.Final</version.plugin.wildfly> <version.plugin.war>3.3.2</version.plugin.war> </properties>
<properties> ... <version.plugin.wildfly>4.1.1.Final</version.plugin.wildfly> <version.plugin.war>3.3.2</version.plugin.war> </properties>
Add
<pluginManagement>
in<build>
section inside the<project>
section.Copy to Clipboard Copied! Toggle word wrap Toggle overflow <project> ... <build> <pluginManagement> <plugins> <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>${version.plugin.wildfly}</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>${version.plugin.war}</version> </plugin> </plugins> </pluginManagement> </build> </project>
<project> ... <build> <pluginManagement> <plugins> <plugin>
1 <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>${version.plugin.wildfly}</version> </plugin> <plugin>
2 <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>${version.plugin.war}</version> </plugin> </plugins> </pluginManagement> </build> </project>
Next steps
1.6. Verifying a maven project
Verify that the Maven project you configured builds.
Prerequisites
You have defined Maven properties.
For more information, see Defining properties in a Maven project.
You have defined Maven repositories.
For more information, see Defining the repositories in a Maven project.
You have imported the JBoss EAP Bill of materials (BOMs) as dependency management.
For more information, see Importing the JBoss EAP BOMs as dependency management in a Maven project.
You have added plug-in management.
For more information, see Adding plugin management in Maven project for a server hello world application.
Procedure
Install the Maven dependencies added in the
pom.xml
locally.Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvn package
$ mvn package
You get an output similar to the following:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
Next steps