 ------
 Portlet
 ------
 Franz Allan Valencia See
 ------
 July 2006
 ------
 
~~ Copyright 2006 The Apache Software Foundation.
~~
~~ Licensed under the Apache License, Version 2.0 (the "License");
~~ you may not use this file except in compliance with the License.
~~ You may obtain a copy of the License at
~~
~~      http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing, software
~~ distributed under the License is distributed on an "AS IS" BASIS,
~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~~ See the License for the specific language governing permissions and
~~ limitations under the License.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/guides/mini/guide-apt-format.html

Creating a portlet
 
 Use <<<maven-archetype-webapp>>> to start a simple webapp maven project. The 
 command is as follows
 
+------+
mvn archetype:create 
  -DgroupId=[your project's group id]
  -DartifactId=[your project's artifact id]
  -DarchetypeArtifactId=maven-archetype-portlet
+------+

 This would then create a maven project.

+------+
.
 |-- src
 |   `-- main
 |       `-- java
 |           |-- [your project's package] 
 |           |   `-- MyPortal.java
 |           |-- jetspeed
 |           |   `-- web.xml
 |           |-- resources
 |           |-- webapp
 |           |   |-- WEB-INF
 |           |   |   |-- tld
 |           |   |   |   `-- portlet.tld
 |           |   |   |-- portlet.xml
 |			 |   |   `-- web.xml
 |           |   |-- help.jsp
 |           |   |-- maximized.jsp
 |           |   `-- normal.jsp
 |           `-- index.jsp
  `-- pom.xml
+------+


