Maven
From KevinWiki
(Difference between revisions)
Line 14: | Line 14: | ||
$ mvn archetype:create -DgroupId=testappgroup -DartifactId=testproject | $ mvn archetype:create -DgroupId=testappgroup -DartifactId=testproject | ||
</pre> | </pre> | ||
+ | (pwd is /home/user/workspace). | ||
*Result | *Result | ||
- | |||
<pre> | <pre> | ||
[INFO] Scanning for projects... | [INFO] Scanning for projects... | ||
Line 50: | Line 50: | ||
[INFO] ------------------------------------------------------------------------ | [INFO] ------------------------------------------------------------------------ | ||
</pre> | </pre> | ||
+ | |||
+ | or with specifying the version. | ||
+ | |||
+ | <pre> | ||
+ | $ mvn archetype:create -DgroupId=testappgroup -DartifactId=testproject -Dversion=1.0.0 | ||
+ | </pre> | ||
+ | |||
+ | *Result | ||
+ | <pre> | ||
+ | [INFO] Scanning for projects... | ||
+ | [INFO] Searching repository for plugin with prefix: 'archetype'. | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] Building Maven Default Project | ||
+ | [INFO] task-segment: [archetype:create] (aggregator-style) | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'. | ||
+ | [INFO] Setting property: velocimacro.messages.on => 'false'. | ||
+ | [INFO] Setting property: resource.loader => 'classpath'. | ||
+ | [INFO] Setting property: resource.manager.logwhenfound => 'false'. | ||
+ | [INFO] [archetype:create] | ||
+ | [WARNING] This goal is deprecated. Please use mvn archetype:generate instead | ||
+ | [INFO] Defaulting package to group ID: testappgroup | ||
+ | [INFO] artifact org.apache.maven.archetypes:maven-archetype-quickstart: checking for updates from central | ||
+ | [INFO] ---------------------------------------------------------------------------- | ||
+ | [INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:RELEASE | ||
+ | [INFO] ---------------------------------------------------------------------------- | ||
+ | [INFO] Parameter: groupId, Value: testappgroup | ||
+ | [INFO] Parameter: packageName, Value: testappgroup | ||
+ | [INFO] Parameter: package, Value: testappgroup | ||
+ | [INFO] Parameter: artifactId, Value: testproject | ||
+ | [INFO] Parameter: basedir, Value: /home/user/workspace | ||
+ | [INFO] Parameter: version, Value: 1.0.0 | ||
+ | [INFO] ********************* End of debug info from resources from generated POM *********************** | ||
+ | [INFO] OldArchetype created in dir: /home/user/workspace/testproject | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] BUILD SUCCESSFUL | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] Total time: 10 seconds | ||
+ | [INFO] Finished at: Mon Apr 06 19:35:56 EST 2009 | ||
+ | [INFO] Final Memory: 17M/292M | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | </pre> | ||
+ | |||
+ | |||
+ | |||
Revision as of 09:40, 6 April 2009
Contents |
Install (on Ubuntu Linux 8.04 or higher)
$ sudo apt-get install maven2
Using Maven2
Create a Project
$ mvn archetype:create -DgroupId=testappgroup -DartifactId=testproject
(pwd is /home/user/workspace).
- Result
[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:create] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'. [INFO] Setting property: velocimacro.messages.on => 'false'. [INFO] Setting property: resource.loader => 'classpath'. [INFO] Setting property: resource.manager.logwhenfound => 'false'. [INFO] [archetype:create] [WARNING] This goal is deprecated. Please use mvn archetype:generate instead [INFO] Defaulting package to group ID: testappgroup [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:RELEASE [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: testappgroup [INFO] Parameter: packageName, Value: testappgroup [INFO] Parameter: package, Value: testappgroup [INFO] Parameter: artifactId, Value: testproject [INFO] Parameter: basedir, Value: /home/user/workspace [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] ********************* End of debug info from resources from generated POM *********************** [INFO] OldArchetype created in dir: /home/user/workspace/testproject [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds [INFO] Finished at: Sun Apr 05 19:20:04 EST 2009 [INFO] Final Memory: 16M/242M [INFO] ------------------------------------------------------------------------
or with specifying the version.
$ mvn archetype:create -DgroupId=testappgroup -DartifactId=testproject -Dversion=1.0.0
- Result
[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'archetype'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [archetype:create] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'. [INFO] Setting property: velocimacro.messages.on => 'false'. [INFO] Setting property: resource.loader => 'classpath'. [INFO] Setting property: resource.manager.logwhenfound => 'false'. [INFO] [archetype:create] [WARNING] This goal is deprecated. Please use mvn archetype:generate instead [INFO] Defaulting package to group ID: testappgroup [INFO] artifact org.apache.maven.archetypes:maven-archetype-quickstart: checking for updates from central [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:RELEASE [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: testappgroup [INFO] Parameter: packageName, Value: testappgroup [INFO] Parameter: package, Value: testappgroup [INFO] Parameter: artifactId, Value: testproject [INFO] Parameter: basedir, Value: /home/user/workspace [INFO] Parameter: version, Value: 1.0.0 [INFO] ********************* End of debug info from resources from generated POM *********************** [INFO] OldArchetype created in dir: /home/user/workspace/testproject [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 10 seconds [INFO] Finished at: Mon Apr 06 19:35:56 EST 2009 [INFO] Final Memory: 17M/292M [INFO] ------------------------------------------------------------------------
Maven Lifecycle
Build a Project
Integration with Eclipse
Add Maven Repository Info
-Add the Maven repository info to the Eclipse workspace.
- Close Eclipse if it is running
- Open the terminal and type the following command.
$ mvn -Declipse.workspace=/home/user/workspace eclipse:add-maven-repo
(Don't use ~ for home directory).
- Result
[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'eclipse'. [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Default Project [INFO] task-segment: [eclipse:add-maven-repo] (aggregator-style) [INFO] ------------------------------------------------------------------------ [INFO] [eclipse:add-maven-repo] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds [INFO] Finished at: Sun Apr 05 16:37:42 EST 2009 [INFO] Final Memory: 16M/292M [INFO] ------------------------------------------------------------------------
- Then
M2_REPO
can be found from
Preferences -> Java -> Classpath Variables
- If the mvn command is executed while Eclipse is running, restart the Eclipse.
Add Eclipse Metadata to Non-Eclipse Project
- Move to the project and run the
maven eclipse:eclipse
$ cd /home/user/workspace/testproject $ mvn eclipse:eclipse
- Result
[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'eclipse'. [INFO] ------------------------------------------------------------------------ [INFO] Building testproject [INFO] task-segment: [eclipse:eclipse] [INFO] ------------------------------------------------------------------------ [INFO] Preparing eclipse:eclipse [INFO] No goals needed for project - skipping [INFO] [eclipse:eclipse] [INFO] Using Eclipse Workspace: /home/user/workspace [INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER [INFO] Not writing settings - defaults suffice [INFO] Wrote Eclipse project for "testproject" to /home/user/workspace/testproject. [INFO] Sources for some artifacts are not available. Please run the same goal with the -DdownloadSources=true parameter in order to check remote repositories for sources. List of artifacts without a source archive: o junit:junit:3.8.1 Javadoc for some artifacts is not available. Please run the same goal with the -DdownloadJavadocs=true parameter in order to check remote repositories for javadoc. List of artifacts without a javadoc archive: o junit:junit:3.8.1 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds [INFO] Finished at: Sun Apr 05 19:56:21 EST 2009 [INFO] Final Memory: 16M/243M [INFO] ------------------------------------------------------------------------
- To download the source code and the javadoc of the junit mentioned above, run the following command.
(Optional)
$ mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true
- Result
[INFO] Scanning for projects... [INFO] Searching repository for plugin with prefix: 'eclipse'. [INFO] ------------------------------------------------------------------------ [INFO] Building testproject [INFO] task-segment: [eclipse:eclipse] [INFO] ------------------------------------------------------------------------ [INFO] Preparing eclipse:eclipse [INFO] No goals needed for project - skipping [INFO] [eclipse:eclipse] [INFO] Using Eclipse Workspace: /home/user/workspace [INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER [INFO] Not writing settings - defaults suffice [INFO] Wrote Eclipse project for "testproject" to /home/user/workspace/testproject. [INFO] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4 seconds [INFO] Finished at: Sun Apr 05 20:06:13 EST 2009 [INFO] Final Memory: 17M/292M [INFO] ------------------------------------------------------------------------
- Now, the project can be imported as an existing Eclipse project with 'Import' function on Eclipse (Chose
Existing Projects into Workspace
).
The Project Object Model (POM)
groupId
- An identifier for the group, team, company, project or organisation. The convention for this is the name beginning with the reverse domain name of the organisation which develops the project. (e.g.
com.lckymn
)
artifactId
- An identifier of a single project belongs the the
groupId
version
- The version identifier of the project release. The project in active development stage can use a special ID which is a
SNAPSHOT
(e.g. 1.1.1-SNAPSHOT).
- There cannot be more than one project with the same three
groupId
,artifactId
andversion
identifiers.
packaging