= Apache Maven =
Maven is a software project management and comprehension tool.
Based on the concept of a Project Object Model (POM), Maven can
manage a project's build, reporting and documentation from a
central piece of information.
Requires Java.
== Slackbuild ==
* su
* cd /tmp
* wget http://slackbuilds.org/slackbuilds/14.0/development/apache-maven.tar.gz
* tar xvzf apache-maven.tar.gz
* cd apache-maven
* wget http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.4-bin.tar.gz
* ./apache-maven.SlackBuild
* installpkg /tmp/apache-maven-3.0.4-noarch-1_SBo.tgz
Package: [[attachment:apache-maven-3.0.4-noarch-1_SBo.tgz]]
== User settings ==
You can specify your user configuration in ${user.home}/.m2/settings.xml.
The default location of your local repository is ${user.home}/.m2/repository/.
== Maven sample web app for JBoss AS 7.1.1 ==
=== Web application creation ===
* cd ~
* mvn archetype:generate -DgroupId=org.allowed.bitarus -DartifactId=WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
* cd WebApp
* mvn clean
* mvn compile
* mvn package
=== Deploy web application on jboss AS 7.1.1 ===
* /opt/jboss-as-7.1.1.Final/bin/standalone.sh
* http://localhost:9990
* admin 12345678
* Manage deployments
* Add content
* Choose file ~/WebApp/target/WebApp.war
* next, save
* enable , confirm
* http://localhost:8080/WebApp/
=== Add REST and servlet support ===
* url http://localhost:8080/WebApp/rest/testSvc/paramx
Add dependencies to pom.xml, jboss AS 7.1.1 JAX-RS
{{{#!highlight xml
org.jboss.resteasy
resteasy-jaxrs
2.2.1.GA
provided
javax
javaee-web-api
6.0
provided
}}}
In JBoss 5.1.0 comment the scope provided for resteasy, to add to WEB-INF folder the required libraries for resteasy.
=== Create source code for REST service and servlet ===
File src/main/java/org/allowed/bitarus/TestService.java
URL http://localhost:8080/WebApp/rest/testSvc/asddddd
{{{#!highlight java
package org.allowed.bitarus;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/testSvc")
public class TestService {
@GET
@Path("/{param}")
public Response getMsg(@PathParam("param") String msg) {
String out = String.format("testSvc returns %s", msg);
return Response.status(200).entity(out).build();
}
}
}}}
File src/main/java/org/allowed/bitarus/Servletx.java
http://localhost:8080/WebApp/servletxxx
{{{#!highlight java
package org.allowed.bitarus;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Servletx extends HttpServlet{
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("
Hello World!");
out.println("Hello World!
");
}
}
}}}
=== Configure web app ===
File src/main/webapp/WEB-INF/web.xml
{{{#!highlight xml
Archetype Created Web Application
resteasy.scan
true
resteasy.servlet.mapping.prefix
/rest
resteasy-servlet
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
resteasy-servlet
/rest/*
Servletx
org.allowed.bitarus.Servletx
Servletx
/servletxxx
}}}
== Dependencies scopes on pom.xml ==
=== compile ===
compile is the default scope; all dependencies are compile-scoped if a scope is not supplied. compile dependencies are available in all classpaths, and '''they are packaged'''.
=== provided ===
provided dependencies are used when you expect the '''JDK or a container to provide them'''.
== Eclipse plugin ==
=== Install on Eclipse 3.8.2 ===
* Choose Help menu
* Install new software
* Name: M2Eclipse
* Location: http://download.eclipse.org/technology/m2e/releases
* Maven Integration For Eclipse
* Select all
* next
* next
* I accept
* Finish
=== Import existing project ===
* Java perspective
* Import
* Maven
* Existing Maven project
* next
* root folder
* next
* finish
== Maven sample enterprise app ==
* cd /tmp
* mvn archetype:generate -DgroupId=org.allowed.bitarus -DartifactId=EnterpriseApp -DarchetypeArtifactId=org.jboss.spec.archetypes.jboss-javaee6-ear-webapp -DinteractiveMode=false
* cd EnterpriseApp/
* Edit pom.xml and comment site module
* mvn clean
* mvn compile
* mvn package # /tmp/EnterpriseApp/EnterpriseApp-ear/target/EnterpriseApp.ear
* Deploy the EnterpriseApp.ear with http://localhost:9990
* Open http://localhost:8080/EnterpriseApp/index.jsf
== Mavem sample ejb JEE5 ==
* cd /tmp
* mvn archetype:generate -DgroupId=org.allowed.bitarus -DartifactId=EjbJEE5 -DarchetypeArtifactId=org.codehaus.mojo.archetypes.ejb-jee5 -DinteractiveMode=false
* cd EnterpriseApp/
* Edit pom.xml and comment site module
* mvn clean
* mvn compile
* mvn package # /tmp/EnterpriseApp/EnterpriseApp-ear/target/EnterpriseApp.ear
== POM EJB 3.0 + JAX-WS ==
For JBoss 5.0. Source code Java below folder ejbModule.
Create source folder in Eclipse named ejbModule.
pom.xml
{{{#!highlight xml
4.0.0
org.allowed.bitarus
test2
0.0.1
ejb
ejbModule
ejbModule
**/*.java
maven-ejb-plugin
2.3
3.0
javax.ejb
ejb-api
3.0
sun-jaxws
jsr181-api
1.0
}}}
Source code files
{{{#!highlight java
}}}
{{{#!highlight java
}}}
{{{#!highlight java
}}}
Build with maven
* mvn clean compile package