Author: jvanzyl
Date: Mon Oct 3 09:36:53 2005
New Revision: 293382
URL: http://svn.apache.org/viewcvs?rev=293382&view=rev
Log: (empty)
Removed:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/template.apt
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a1.xml
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a2.xml
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/benefits-of-using-maven.apt
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/index.apt
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a1.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a1.xml?rev=293382&r1=293381&r2=293382&view=diff
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a1.xml
(original)
+++
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a1.xml
Mon Oct 3 09:36:53 2005
@@ -1,15 +1,12 @@
<project default="compile">
- <target name="compile" description="o Compile the code" depends="get-deps">
+ <property name="classesdir=" value="..."/>
+ <property name="libdir" value="..."/>
+ <target name="compile">
<mkdir dir="${classesdir}"/>
<javac destdir="${classesdir}">
<src>
<pathelement location="src/main/java"/>
</src>
- <classpath>
- <fileset dir="${libdir}">
- <include name="/path/to/junit-3.8.1.jar"/>
- </fileset>
- </classpath>
</javac>
</target>
</project>
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a2.xml
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a2.xml?rev=293382&r1=293381&r2=293382&view=diff
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a2.xml
(original)
+++
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/ant-comparison/build-a2.xml
Mon Oct 3 09:36:53 2005
@@ -1,5 +1,8 @@
<project default="compile">
- <target name="compile" description="o Compile the code" depends="get-deps">
+ <property name="classesdir=" value="..."/>
+ <property name="test.classesdir=" value="..."/>
+ <property name="libdir" value="..."/>
+ <target name="compile">
<mkdir dir="${classesdir}"/>
<javac destdir="${classesdir}">
<src>
@@ -7,7 +10,7 @@
</src>
</javac>
</target>
- <target name="test-compile" description="o Compile the code"
depends="get-deps">
+ <target name="test-compile">
<mkdir dir="${test.classesdir}"/>
<javac destdir="${test.classesdir}">
<src>
@@ -15,7 +18,7 @@
</src>
<classpath>
<fileset dir="${libdir}">
- <include name="/path/to/junit-3.8.1.jar"/>
+ <include name="junit-3.8.1.jar"/>
</fileset>
</classpath>
</javac>
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt?rev=293382&r1=293381&r2=293382&view=diff
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
(original)
+++
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/background/history-of-maven.apt
Mon Oct 3 09:36:53 2005
@@ -8,13 +8,13 @@
History of Maven by Jason van Zyl
- Maven began its life in the {{{http://jakarta.apache.org}}Jakarta {{{
http://jakarta.apache.org/alexandria/legacy/}}Alexandria}
+ Maven began its life in the {{{http://jakarta.apache.org}Jakarta}} {{{
http://jakarta.apache.org/alexandria/legacy/}Alexandria}}
project. The Alexandria project is now defunct but was the breeding ground
for not only Maven, but for the
- {{{http://gump.apache.org}}Gump} and {{http://forrest.apache.org}}Forrest}
projects as well. From the old
-
{{{http://cvs.apache.org/viewcvs.cgi/jakarta-alexandria/proposal/maven/?hideattic=0}}CVS}
archive
+ {{{http://gump.apache.org}Gump}} and {{http://forrest.apache.org}Forrest}}
projects as well. From the old
+
{{{http://cvs.apache.org/viewcvs.cgi/jakarta-alexandria/proposal/maven/?hideattic=0}CVS}}
archive
you can see that as of the date of this document Maven was removed from
Alexandria about 3 years, 7 months ago
making Maven about 4 years old! Maven spent about 5 months as part of the
Alexandria before moving on to its next home
- in the {{{http://jakarta.apache.org/turbine}}Turbine} project.
+ in the {{{http://jakarta.apache.org/turbine}Turbine}} project.
Though Maven started in Alexandria the testbed for its use was the Turbine
project. Turbine was in the process of
decoupling its persistence layer, services layer and web layer into separate
builds and I got very tired of having
@@ -43,6 +43,8 @@
* <<A standard directory structure>> so you didn't have to go fishing around
for libraries, sources and documentation
+ []
+
So started using a model with a simple XML representation and picked what I
thought were some decent standards for
a directory structure and that's how it started. I was still using Ant under
the covers but I had some standard targets
that could be used in each of the Turbine builds and that made me happy.
@@ -52,7 +54,7 @@
pretty much allowed any project to do whatever it wanted in terms of
directory structure and use of JARs in CVS
as Gump was not trying to standardize anything at the time but trying to
continously integrate anything it could
get its hands on. My goals were different and I wanted to make an
-
{{{http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html}}opinionated}
piece
+
{{{http://www.oreillynet.com/pub/a/network/2005/08/30/ruby-rails-david-heinemeier-hansson.html}opinionated}}
piece
of software and I preferred the notion of convention over configuration. I
wanted a project's infrastructure to
look the same and work the same so I continued to pursue my own model for a
project and decided to disagree with
Gump's particular tact at project modelling which I thought was too flexible.
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/benefits-of-using-maven.apt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/guides/getting-started/benefits-of-using-maven.apt?rev=293382&r1=293381&r2=293382&view=diff
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/benefits-of-using-maven.apt
(original)
+++
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/benefits-of-using-maven.apt
Mon Oct 3 09:36:53 2005
@@ -6,4 +6,88 @@
12 October 2005
-----
-Benefits of using Maven
\ No newline at end of file
+Benefits of using Maven
+
++-----+
+
+<jdcasey> standardization
+<jdcasey> reuse
+<jdcasey> consistency
+<jdcasey> (wrt build output)
+<jdcasey> let's see
+<jdcasey> dependency management
+<jdcasey> scalability (lower level of additional info/code to add a new step
to the build process)
+
+ashley williams
+1. Dependency management
+2. Build lifecycle management
+3. Large existing repository
+4. Eclipse aware (sort of)
+5. Well documented (hopefully soon)
+
+eric hartmann
+* One directory layout,
+* A single way to define dependencies,
+* Setting up a project is really fast,
+* 99% of my needs are available out of the box,
+
+And my last is for maven 2.0:
+* Transitive dependencies ! :-)
+
+vincent massol
+Generally speaking:
+- common build structure
+- build best practices enforcement (shared build meme)
+- automated build of application, from source code to pre-production
+platform => fast time to market with reduced risks
+- works well with distributed teams ;-) Location doesn't matter.
+
+Compared to Ant:
+- Higher level of reusability between builds
+- Faster turn around time to set up a powerful build (once you're used to
+Maven)
+- Less maintenance
+- Shared build meme. I know how to build any maven project
+- Greater momentum: Ant is now legacy and not moving fast ahead. Maven is
+forging ahead fast and there's a potential of having lots of high-value
+tools around Maven (CI, Dashboard project, IDE integration, etc).
+
+emmanuel
+<evenisse> 1- All artifacts are versionned and store in a repository
+<evenisse> 2- build process is standardized for all projects
+<evenisse> 3- a lot of goals are available so it isn't necessary to develop
some specific build process part contrary to ANT
+<evenisse> 4- we can reuse existing ANT tasks in build process with antrun
plugin
+<evenisse> 5- it provide quality project information with generated site
+<evenisse> (6)- Easy to learn and use
+
+david jackman
+1. Dependency management
+2. Makes the build process much easier at the project level (i.e. don't
+have to create very much for each project for Maven to build it
+correctly, and those things you do create are more declarative than
+functional)
+3. Automatic project web sites with consistent information about each
+project
+4. Recommended standards and best practices for project layout and
+definition
+
+jesse
+1) Promotes modular design of code.
+
+by making it simple to manage mulitple projects it allows the design to be
laid out into muliple logical parts, weaving these parts together through the
use of dependency tracking in pom files.
+
+2) Enforces modular design of code.
+
+it is easy to pay lipservice to modular code, but when the code is in seperate
compiling projects it is impossible to cross pollinate references between
modules of code unless you specifically allow for it in your dependency
management...there is no 'I'll just do this now and fix it later'
implementations.
+
+3) Dependency Management is clearly declared.
+
+with the dependency management mechanism you have to try to screw up your jar
versioning...there is none of the classic problem of 'which version of this
vendor jar is this?' And setting it up on an existing project rips the top off
of the existing mess if it exists when you are forced to make 'unknown'
versions in your repository to get things up and running...that or lie to
yourself that you know the actual version of ABC.jar.
+
+4) strong typed life cycle
+
+there is a strong defined lifecycle that a software system goes thru from the
initiation of a build to the end...and the users are allowed to mix and match
their system to the lifecycle instead of cobble together their own lifecycle..
this has the additional benefit of allowing people to move from one project to
another and speak using the same vocabulary in terms of software building
+
+
+
++-----+
\ No newline at end of file
Modified:
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/index.apt
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-site/src/site/apt/guides/getting-started/index.apt?rev=293382&r1=293381&r2=293382&view=diff
==============================================================================
---
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/index.apt
(original)
+++
maven/components/trunk/maven-site/src/site/apt/guides/getting-started/index.apt
Mon Oct 3 09:36:53 2005
@@ -8,50 +8,63 @@
Maven Getting Started Guide
- This guide is intended as a reference for those working with Maven for the
first. It is also intended to serve as
- a cookbook with self-contained references and solutions for common usecases.
For the first time user it is suggested that
- you step through the material in a sequential fashion, but for users more
familiar with Maven the guide endeavours
+ This guide is intended as a reference for those working with Maven for the
first time, but is also intended to serve as
+ a cookbook with self-contained references and solutions for common usecases.
It is recommended as a first time user
+ that you step through the material in a sequential fashion. For users more
familiar with Maven the guide endeavours
to provide a quick solution for the need at hand. It is assumed at this point
that you have downloaded Maven and
installed Maven on your local machine. If you have not done so please refer
to the
- {{{../download.html}}Download and Installation} instructions.
+ {{{../../download.html}Download and Installation}} instructions.
+
+ Ok, so you now have Maven installed and we're ready to go. Before we jump
into our examples we'll very briefly go over
+ what Maven is and how it can help you with your daily work and collaborative
efforts with team members. Maven will, of
+ course, work for small projects but Maven shines in helping teams operate
more effectively by allowing team members
+ to focus on what the stakeholders of a project require. You can leave the
build infrastructure to Maven!
* What is Maven?
- At first glance Maven can appear to be many things, but in a nutshell Maven
is an attempt to apply patterns to
+ At first glance Maven can appear to be many things, but in a nutshell Maven
is an attempt <to apply patterns to
a project's build infrastructure in order to promote comprehension and
productivity by providing a clear path in the
- use of best practices. Maven is essentially a project management and
comprehension tool and as such provides a way to
- help with:
+ use of best practices>. Maven is essentially a project management and
comprehension tool and as such provides a way to
+ help with managing:
+
+
+ * Builds
+
+ * Documentation
+
+ * Reporting
- * Managing builds
+ * Dependencies
- * Managing dependencies
+ * SCMs
- * Managing documentation
+ * Releases
- * Managing releases
+ * Distribution
- If you want to know about the Maven itself you can check out
{{{../philosophy-of-maven.html}}The Philosophy of Maven} and
- the {{{../history-of-maven.html}}The History of Maven}. Now we want to move
on to why you, the user, can benefit from
+ []
+
+ If you want more background information on Maven you can check out
{{{background/philosophy-of-maven.html}The Philosophy of Maven}} and
+ the {{{background/history-of-maven.html}The History of Maven}}. Now we want
to move on to why you, the user, can benefit from
using Maven.
* How can Maven benefit my development process?
- Maven can benefit your build process by using standard conventions and
practices to accelerate your development
- process while at the same time helping you achieve a higher rate of success.
For a more detailed look at how
- Maven can help you with your development process please refer to
{{{../benefits-of-using-maven.apt}}The Benefits of Using Maven}.
+ Maven can provide benefits for your build process by employing standard
conventions and practices to accelerate your development
+ cycle while at the same time helping you achieve a higher rate of success.
For a more detailed look at how
+ Maven can help you with your development process please refer to
{{{benefits-of-using-maven.html}The Benefits of Using Maven}}.
-* How do I make my first Maven project?
+ Now that we have covered a little bit of the history and purpose of Maven
let's get into some real examples to
+ get you up and running with Maven!
- We are going to jump head long into creating your first Maven project, but
before doing that it is recommended that you
- understand what Maven's Project Object Model (POM) is all about. For this you
can refer to the {{{../introduction-to-the-pom.html}}Introduction to the POM}.
- You can read this later if you want to jump right into seeing a working Maven
build, but the POM is the primary unit of
- work in Maven and so understanding the POM can be highly useful!
+* How do I make my first Maven project?
+ We are going to jump head long into creating your first Maven project!
To create our first Maven project we are going to use Maven's archetype
mechanism. An archetype is defined as
<an original pattern or model from which all other things of the same kind
are made>. In Maven, an archetype is a template
of a project which is combined with some user input to produce a working
Maven project that has been tailored to the
- user's wishes. We are going to show you how the archetype mechanism works
now, but if you would to know more about
- archetypes please refer to our {{{../introduction-to-archetypes}}Introduction
to Archetypes}.
+ user's requirements. We are going to show you how the archetype mechanism
works now, but if you would to know more about
+ archetypes please refer to our
{{{introduction-to-archetypes.html}Introduction to Archetypes}}.
On to creating your first project! In order to create the simplest of Maven
projects execute the following from
the command line:
@@ -62,42 +75,12 @@
+-----+
- Once you have executed this command you will have a directory structure that
looks like the following:
+ Once you have executed this command you will notice a few things have
happened. First you will notice that
+ a file names <<<pom.xml>>> has been created which should look like this:
+-----+
-my-app
-|-- pom.xml
-`-- src
- |-- main
- | `-- java
- | `-- com
- | `-- mycompany
- | `-- app
- | `-- App.java
- `-- test
- `-- java
- `-- com
- `-- mycompany
- `-- app
- `-- AppTest.java
-
-+-----+
-
- As you can see, the project created from the archetype has a POM, a source
tree for you applications sources and
- a source tree for your tests. This is the standard layout for Maven projects
where the application sources
- reside in <<<${basedir}/src/main/java>>> and test sources reside in
<<<${basedir}/src/test/java>>>.
-
- If you were to create a Maven project by hand this is the directory structure
that we recommend using. This is a
- Maven convention and to learn more about it you can read our
- {{{../introduction-to-the-standard-directory-layout}}Introduction to the
Standard Directory Layout}.
-
- So now that we have our first project let's take a look at the POM that was
created for us by the archetype
- mechanism:
-
-+-----+
-
- <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<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>
@@ -118,26 +101,66 @@
+-----+
- This is a very simple POM but still displays the key elements every POM
contains so lets walk through each of them
- to familiarize you with the POM essentials:
+ What is contained in the <<<pom.xml>>> is the Project Object Model (POM) for
this project. The POM is the basic unit
+ of work in Maven. This is important to remember because Maven is inherently
project-centric in that everything revolves
+ around the notion of a project. In short, the POM contains every important
piece of information about your project and
+ is essentially one-stop-shopping for finding anything related to your
project. Understanding the POM is important and
+ new users are encouraged to refer to the
{{{introduction-to-the-pom.html}Introduction to the POM}}.
+
+ This is a very simple POM but still displays the key elements every POM
contains so lets walk through each of them
+ to familiarize you with the POM essentials:
+
+ * <<project>>
- * <<project>>
+ * <<modelVersion>>
- * <<modelVersion>>
+ * <<groupId>>
- * <<groupId>>
+ * <<artifactId>>
- * <<artifactId>>
+ * <<packaging>>
- * <<packaging>>
+ * <<version>>
- * <<version>>
+ * <<name>>
- * <<name>>
+ * <<url>>
- * <<url>>
+ []
- For a complete reference of what elements are available for use in the POM
please refer to our {{{../../maven-model/maven.html}}POM Reference}.
+ For a complete reference of what elements are available for use in the POM
please refer to our {{{../../maven-model/maven.html}POM Reference}}.
+ Now let's get back to the project at hand.
+
+ After the archetype generation of your first project you will also notice
that the following directory structure
+ has been created:
+
++-----+
+
+my-app
+|-- pom.xml
+`-- src
+ |-- main
+ | `-- java
+ | `-- com
+ | `-- mycompany
+ | `-- app
+ | `-- App.java
+ `-- test
+ `-- java
+ `-- com
+ `-- mycompany
+ `-- app
+ `-- AppTest.java
+
++-----+
+
+ As you can see, the project created from the archetype has a POM, a source
tree for you applications sources and
+ a source tree for your test sources. This is the standard layout for Maven
projects where the application sources
+ reside in <<<${basedir}/src/main/java>>> and test sources reside in
<<<${basedir}/src/test/java>>>.
+
+ If you were to create a Maven project by hand this is the directory structure
that we recommend using. This is a
+ Maven convention and to learn more about it you can read our
+ {{{introduction-to-the-standard-directory-layout.html}Introduction to the
Standard Directory Layout}}.
Now that we have a POM, some application sources, and some test sources you
are probably asking ...
@@ -149,6 +172,8 @@
+-----+
+ Explain why this is so easy ...
+
Upon executing this command you should see output like the following:
+-----+
@@ -177,30 +202,21 @@
standard conventions the POM above is very small and you haven't explicity
had to tell Maven where any of
your sources are or where the output should go. By following the standard
Maven conventions you can get
a lot done with very little effort! Just as a comparison lets take a look at
what you might have had to do
- in {{{http://ant.apache.org}}Ant} to accomplish the same thing:
+ in {{{http://ant.apache.org}Ant}} to accomplish the same
{{{ant/build-a1.xml}thing}}.
-+----+
+ Now this is simply to compile a single application source and the Ant script
shown is pretty much the same
+ size as the POM shown above. But we'll see how much more we can do with just
that simple POM above!
-<project default="compile">
- <target name="compile" description="o Compile the code" depends="get-deps">
- <mkdir dir="${classesdir}"/>
- <javac destdir="${classesdir}">
- <src>
- <pathelement location="src/main/java"/>
- </src>
- </javac>
- </target>
-</project>
+* How do I compile my test sources?
+----+
- Now this is simply to compile a single application source and the Ant script
above is pretty much the same
- size as the POM shown above. But we'll see how much more we can do with just
that simple POM above!
-
-~~* How do I compile my test sources?
+m2 test-compile
+----+
-+----+
+
+ Upon executing this command you should see output like the following:
+
~~* How do I create a JAR?
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]