summaryrefslogtreecommitdiffstats
path: root/documentation/getting-started/getting-started-maven.asciidoc
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/getting-started/getting-started-maven.asciidoc')
-rw-r--r--documentation/getting-started/getting-started-maven.asciidoc133
1 files changed, 133 insertions, 0 deletions
diff --git a/documentation/getting-started/getting-started-maven.asciidoc b/documentation/getting-started/getting-started-maven.asciidoc
new file mode 100644
index 0000000000..3914e973aa
--- /dev/null
+++ b/documentation/getting-started/getting-started-maven.asciidoc
@@ -0,0 +1,133 @@
+---
+title: Using Vaadin with Maven
+order: 6
+layout: page
+---
+
+[[getting-started.maven]]
+= Using Vaadin with Maven
+
+((("Maven", "creating a project", id="term.maven.creating", range="startofrange")))
+
+
+Maven is a commonly used build and dependency management system. The Vaadin core
+library and all Vaadin add-ons are available through Maven. You can use a Maven
+with a front-end from Eclipse or NetBeans, or by using the command-line as
+described in this section.
+
+In addition to regular Maven, you can use any Maven-compatible build or
+dependency management system, such as Ivy or Gradle. For Gradle, see the
+link:https://github.com/johndevs/gradle-vaadin-plugin[Gradle Vaadin Plugin].
+Vaadin Plugin for Eclipse uses Ivy for resolving dependencies in Vaadin
+projects, and it should provide you with the basic Ivy configuration.
+
+[[getting-started.maven.command-line]]
+== Working from Command-Line
+
+You can create a new Maven project with the following command (given in one
+line):
+
+[subs="normal"]
+----
+[prompt]#$# [command]#mvn# archetype:generate \
+ -DarchetypeGroupId=com.vaadin \
+ -DarchetypeArtifactId=[parameter]#vaadin-archetype-application# \
+ -DarchetypeVersion=[replaceable]#7.x.x# \
+ -DgroupId=[replaceable]#your.company# \
+ -DartifactId=[replaceable]#project-name# \
+ -Dversion=[replaceable]#0.1# \
+ -Dpackaging=war
+----
+The parameters are as follows:
+
+[parameter]#archetypeGroupId#:: The group ID of the archetype is [literal]#++com.vaadin++# for Vaadin
+archetypes.
+
+[parameter]#archetypeArtifactId#:: The archetype ID. Vaadin 7 currently supports
+[literal]#++vaadin-archetype-application++# archetype for server-side
+applications and [literal]#++vaadin-archetype-widget++# for client-side widget
+development projects.
+
++
+//TODO Vaadin 7: Not all these archetypes are supported
++
+////
+<itemizedlist> <listitem> <literal>vaadin-archetype-clean</literal> is a new project with a barebone skeleton for a regular Vaadin application. The <filename>pom.xml</filename> includes out-commented definitions for additional widgets. </listitem> </itemizedlist> <itemizedlist> <listitem> <literal>vaadin-archetype-widget</literal> is a skeleton for a project with custom widgets. </listitem> </itemizedlist> <itemizedlist> <listitem> <literal>vaadin-archetype-sample</literal> is also for a project with custom widgets, but the skeleton includes the Color Picker example used in <xref linkend="gwt"/>. </listitem> </itemizedlist> <itemizedlist> <listitem> <literal>vaadin-archetype-addon</literal> is for Vaadin add-on projects. It packages the add-on so that it can be published in Vaadin Directory. The archetype is for server-side add-ons and does not include definitions needed for building a widget set. If your add-on includes or requires other than the widgets in the Vaadin core library, you need to copy the required definitions from a POM of a <literal>vaadin-archetype-clean</literal> project. </listitem> </itemizedlist> <itemizedlist> <listitem> <literal>vaadin-archetype-touchkit</literal> is for projects using Vaadin TouchKit, described in <xref linkend="mobile"/>. Notice that this archetype uses the AGPL-licensed version of TouchKit, which requires that your project must also be licensed under the AGPL license. </listitem> </itemizedlist>
+////
+[parameter]#archetypeVersion#:: Version of the archetype to use. This should be [literal]#++LATEST++# for normal
+Vaadin releases. For prerelease versions it should be the exact version number,
+such as [literal]#++7.5.3++#.
+
+[parameter]#groupId#:: A Maven group ID for your project. It is normally your organization domain name
+in reverse order, such as com.example. The group ID is also used as a prefix for
+the Java package in the sources, so it should be Java compatible - only
+alphanumerics and an underscore.
+
+[parameter]#artifactId#:: Identifier of the artifact, that is, your project. The identifier may contain
+alphanumerics, minus, and underscore. It is appended to the group ID to obtain
+the Java package name for the sources. For example, if the group ID is
+com.example and artifact ID is myproject, the project sources would be placed in
+com.example.myproject package.
+
+[parameter]#version#:: Initial version number of your application. The number must obey the Maven
+version numbering format.
+
+[parameter]#packaging#:: How will the project be packaged. It is normally [literal]#++war++#.
+
+
+
+Creating a project can take a while as Maven fetches all the dependencies. The
+created project structure is shown in
+<<figure.getting-started.maven.archetype.created>>.
+
+[[figure.getting-started.maven.archetype.created]]
+.A New Vaadin Project with Maven
+image::img/maven-project-created.png[]
+
+
+[[getting-started.maven.compiling]]
+== Compiling and Running the Application
+
+((("Maven", "compiling", id="term.maven.compiling", range="startofrange")))
+
+
+Before the application can be deployed, it must be compiled and packaged as a
+WAR package. You can do this with the [literal]#++package++# goal as follows:
+
+[subs="normal"]
+----
+[prompt]#$# [command]#mvn# package
+----
+The location of the resulting WAR package should be displayed in the command
+output. You can then deploy it to your favorite application server.
+
+The easiest way to run Vaadin applications with Maven is to use the light-weight
+Jetty web server. After compiling the package, all you need to do is type:
+
+[subs="normal"]
+----
+[prompt]#$# [command]#mvn# jetty:run
+----
+The special goal starts the Jetty server in port 8080 and deploys the
+application. You can then open it in a web browser at
+http://localhost:8080/project-name.
+
+(((range="endofrange", startref="term.maven.compiling")))
+
+[[getting-started.maven.addons]]
+== Using Add-ons and Custom Widget Sets
+
+((("Maven", "using add-ons", id="term.maven.addons", range="startofrange")))
+
+
+If you use Vaadin add-ons that include a widget set or make your custom widgets,
+you need to enable widget set compilation in the POM. The required configuration
+is described in
+<<dummy/../../../framework/addons/addons-maven#addons.maven,"Using Add-ons in a
+Maven Project">>.
+
+
+(((range="endofrange", startref="term.maven.addons")))
+(((range="endofrange", startref="term.maven.creating")))
+
+