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"