Creating a simple Java Web project with Maven tutorial -- Part 1
Three part tutorial for Java beginners to create a simple web application (i.e. a Web ARchive file -- i.e. a war file).
- Part-1: Without using an IDE like eclipse. Just using Maven, Java, and text editor like Notepad++.
- Part-2: Analyzing the war file and Maven pom.xml file.
- Part-3: Import the project into eclipse and use m2e plugin for Maven within eclipse.
mvn archetype:generate -DgroupId=com.mytutorial -DartifactId=simpleWeb -DarchetypeArtifactId=maven-archetype-webapp
Enter "0.1-SNAPSHOT" when prompted for the version and "Y" to package: com.mytutorial.
Step 2: You can verify the structure created in the file system as shown below. pom.xml is the maven file to define build details and web.xml is web deployment descriptor file.
Step 3: open the pom.xml file in a text editor like Notepad++. If you don't already have it, download it. Add servlet-api as a dependency.
<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.mytutorial</groupId>
<artifactId>simpleWeb</artifactId>
<packaging>war</packaging>
<version>0.1-SNAPSHOT</version>
<name>simpleWeb Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<finalName>simpleWeb</finalName>
</build>
</project>
Step 4: Define a simple servlet class in a package com.mytutorial. You need to first create a folder named "java" under src/main. Then create folders com and com/mytutorial under the folder java. You can use the notepad++
Create a Java class named SimpleServlet.java
package com.mytutorial;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SimpleServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Simple</h1>");
out.println("</body>");
out.println("</html>");
}
}
Step 5: Go to the DOS command prompt and change directory to simpleWeb where the pom.xml file is. type the command mvn compile. This should compile your SimpleServlet.java.
C:\Users\akumaras\projects\simpleWeb>mvn compile [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building simpleWeb Maven Webapp 0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ simpleWeb --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ simpleWeb --- [WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent! [INFO] Compiling 1 source file to C:\Users\akumaras\projects\simpleWeb\target\classes [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.399s [INFO] Finished at: Wed Feb 26 17:29:02 EST 2014 [INFO] Final Memory: 7M/243M
Note that in the file system SimpleServlet.class file gets created under target/classes/com/mytutorial.
Step 6: You need to define the web description in the web.xml descriptor file. You need to configure your Servlet details here.
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>Simple web app</display-name> <servlet> <servlet-name>Simple Servlet</servlet-name> <servlet-class>com.mytutorial.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Simple Servlet</servlet-name> <url-pattern>/simple</url-pattern> </servlet-mapping> </web-app>
Step 7: Java web applications are packaged as a war file. In order to package it, you need to run the Maven command mvn package.
C:\Users\akumaras\projects\simpleWeb>mvn package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building simpleWeb Maven Webapp 0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ simpleWeb --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ simpleWeb --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ simpleWeb --- [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:\Users\akumaras\projects\simpleWeb\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ simpleWeb --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ simpleWeb --- [INFO] No tests to run. [INFO] [INFO] --- maven-war-plugin:2.2:war (default-war) @ simpleWeb --- [INFO] Packaging webapp [INFO] Assembling webapp [simpleWeb] in [C:\Users\akumaras\projects\simpleWeb\target\simpleWeb] [INFO] Processing war project [INFO] Copying webapp resources [C:\Users\akumaras\projects\simpleWeb\src\main\webapp] [INFO] Webapp assembled in [53 msecs] [INFO] Building war: C:\Users\akumaras\projects\simpleWeb\target\simpleWeb.war [INFO] WEB-INF\web.xml already added, skipping [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.575s [INFO] Finished at: Wed Feb 26 17:45:45 EST 2014 [INFO] Final Memory: 6M/243M [INFO] ------------------------------------------------------------------------
Inspect your file system for the war file simpleWeb.war under target. If you are curious to see what files are inside, you can unzip it with a WinZip utility.
Step: This war file can be deployed to any web container or application server. For example, Tomcat, JBoss, Weblogic, etc. I deployed this to my local Weblogic server running on port 7002.
http://localhost:7002/simpleWeb/simple
Where "simpleWeb" is the name of the war file you had created, and "simple" is the "url-pattern" you defined in your web.xml file.
A simple Java web tutorial without any IDE like eclipse. This also gives you an idea as to how Maven works.
Labels: JEE Tutorial, Maven Tutorial



0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home