You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2006/10/26 01:35:47 UTC

svn commit: r467812 - /maven/site/trunk/src/site/apt/maven-in-five-minutes.apt

Author: jvanzyl
Date: Wed Oct 25 16:35:47 2006
New Revision: 467812

URL: http://svn.apache.org/viewvc?view=rev&rev=467812
Log:
MNG-2615 A very nice 5 minute guide for new users to maven
Submitted by: Eric Redmond

Added:
    maven/site/trunk/src/site/apt/maven-in-five-minutes.apt   (with props)

Added: maven/site/trunk/src/site/apt/maven-in-five-minutes.apt
URL: http://svn.apache.org/viewvc/maven/site/trunk/src/site/apt/maven-in-five-minutes.apt?view=auto&rev=467812
==============================================================================
--- maven/site/trunk/src/site/apt/maven-in-five-minutes.apt (added)
+++ maven/site/trunk/src/site/apt/maven-in-five-minutes.apt Wed Oct 25 16:35:47 2006
@@ -0,0 +1,229 @@
+ ----
+ Maven in 5 Minutes
+ -----
+ Eric Redmond
+ -----
+ 14 September 2006
+ -----
+
+Maven in 5 Minutes
+
+* Installation
+
+  <Maven is a Java tool, so you must have {{{http://java.sun.com}Java}} installed in order to proceed>
+
+  First, {{{download.html}download Maven}} and unzip it to your desired installation directory, for example
+  <<<C:\\maven>>> in windows, or <<</usr/local/maven>>> in Linux. After this, add the system variable M2_HOME
+  as well as the $M2_HOME/bin directory to your system path. Type the following in a terminal or command prompt:
+
+------
+mvn --version
+------
+
+  It should print out your installed version of Maven, for example:
+
+------
+  Maven version: 2.0.4
+------
+
+  Depending upon your network setup, you may require extra configuration. Check out the
+  {{{guides/mini/guide-configuring-maven.html}Guide to Configuring Maven}} if necessary.
+
+* Creating a Project
+
+  On your command line, execute the following maven goal:
+
+-------
+mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
+-------
+
+  <If you have just installed Maven, it may take a while on the first run. This is because Maven is downloading
+  the most recent artifacts (plugin jars and other files) into your local repository. You may also need to
+  execute the command a couple of times before it succeeds. This is because the remote server may time out before
+  your downloads are complete. Don't worry, there are ways to fix that.>
+
+  You will notice that the <create> goal created a directory with the same name given as the
+  artifactId. Change into that directory.
+
+-------
+cd my-app
+-------  
+
+  Under this directory you will notice the following 
+  {{{guides/introduction/introduction-to-the-standard-directory-layout.html}standard project structure}}.
+
+-------
+my-app
+|-- pom.xml
+`-- src
+    |-- main
+    |   `-- java
+    |       `-- com
+    |           `-- mycompany
+    |               `-- app
+    |                   `-- App.java
+    `-- test
+        `-- java
+            `-- com
+                `-- mycompany
+                    `-- app
+                        `-- AppTest.java
+-------
+
+  The src/main/java directory contains the project source code, the src/test/java directory contains
+  the test source, and the pom.xml is the project's Project Object Model, or POM.
+
+** The POM
+
+  The pom.xml file is the core of a project's configuration in Maven. It is a single configuration
+  file that contains the majority of information required to build a project in just the way you want.
+  The POM is huge and can be daunting in its complexity, but it is not necessary to understand all
+  of the intricacies just yet to use it effectively. This project's POM is:
+  
+------
+<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.mycompany.app</groupId>
+  <artifactId>my-app</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+  <name>Maven Quick Start Archetype</name>
+  <url>http://maven.apache.org</url>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+</project>
+------  
+
+  
+
+** What did I just do?
+  
+  You executed the Maven goal <archetype:create>, and passed in various parameters to that goal. 
+  The prefix <archetype> is the {{{plugin}plugins/index.html}} that contains the goal. If you are familiar with 
+  {{{http://ant.apache.org}Ant}}, you
+  may concieve of this as similar to a task. This goal created a simple project based upon an archetype.
+  Suffice it to say for now that a <plugin> is a collection
+  of <goals> with a general common purpose. For example the jboss-maven-plugin, whose purpose is "deal with 
+  various jboss items".
+
+** Build the Project
+
+-------
+mvn package
+-------
+
+  The command line will print out various actions, and end with the following:
+
+-------
+ ...
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+[INFO] Total time: 2 seconds
+[INFO] Finished at: Thu Oct 05 21:16:04 CDT 2006
+[INFO] Final Memory: 3M/6M
+[INFO] ------------------------------------------------------------------------
+-------
+
+  Unlike the first command executed (<archetype:create>) you may notice the second is simply
+  a single word - <package>. Rather than a goal, this is a <phase>. A phase is a step in the
+  {{{introduction/introduction-to-the-lifecycle.html}build lifecycle}}, which is an ordered
+  sequence of phases. When a phase is given, Maven will execute every phase in the sequence
+  up to and including the one defined. For example, if we execute the <compile> phase, the
+  phases that actually get executed are:
+  
+  [[1]] validate
+
+  [[2]] generate-sources
+
+  [[3]] process-sources
+
+  [[4]] generate-resources
+
+  [[5]] process-resources
+
+  [[6]] compile
+
+  []
+
+  You may test the newly compiled and packaged JAR with the following command:
+
+-------
+java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
+-------
+
+  Which will print the quintessential:
+
+-------
+Hello World!
+-------
+
+* Running Maven Tools
+
+** Maven Phases
+
+  Although hardly a comprehensive list, these are the most common <default> lifecycle phases executed.
+  
+  * <<validate>>: validate the project is correct and all necessary information is available
+
+  * <<compile>>: compile the source code of the project
+
+  * <<test>>: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
+
+  * <<package>>: take the compiled code and package it in its distributable format, such as a JAR.
+
+  * <<integration-test>>: process and deploy the package if necessary into an environment where integration tests can be run
+
+  * <<verify>>: run any checks to verify the package is valid and meets quality criteria
+
+  * <<install>>: install the package into the local repository, for use as a dependency in other projects locally
+
+  * <<deploy>>: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
+
+  []
+
+  There are two other Maven lifecycles of note beyond the <default> list above. They are
+  
+  * <<clean>>: cleans up artifacts created by prior builds
+  
+  []
+  
+  * <<site>>: generates site documentation for this project
+  
+  []
+
+  Phases are actually mapped to underlying goals. The specific goals executed per phase is dependant upon the
+  packaging type of the project. For example, <package> executes <jar:jar> if the project type is a JAR, and
+  <war:war> is the project type is - you guessed it - a WAR.
+
+  An interesting thing to note is that phases and goals may be executed in sequence.
+  
+------
+mvn clean dependency:copy-dependencies package
+------
+
+  This command will clean the project, copy dependencies, and package the project (executing all phases up to
+  <package>, of course).
+
+** Generating the Site
+
+------
+mvn site
+------
+
+  This phase generates a site based upon information on the project's pom. You can look at the
+  documentation generated under <<<target/site>>>.
+
+* Conclusion
+
+  We hope this quick overview has piqued your interest in the versitility of Maven. Note that this is a very
+  truncated quick-start guide. Now you are ready for more comprehensive details concerning
+  the actions you have just performed. Check out the {{{guides/getting-started/index.html}Maven Getting Started Guide}}.
+

Propchange: maven/site/trunk/src/site/apt/maven-in-five-minutes.apt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/site/trunk/src/site/apt/maven-in-five-minutes.apt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"