开始一个新的Maven项目,在命令行使用Maven Archetype插件。
- $ mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 \
-
-DartifactId=simple \
-
-DpackageName=org.sonatype.mavenbook
-
[INFO] Scanning for projects...
-
[INFO] Searching repository for plugin with prefix: 'archetype'.
-
[INFO] artifact org.apache.maven.plugins:maven-archetype-plugin: checking for \
-
updates from central
-
[INFO] -----------------------------------------------------------------------
-
[INFO] Building Maven Default Project
-
一个简单的Maven项目
-
21
-
[INFO] task-segment: [archetype:create] (aggregator-style)
-
[INFO] --------------------------------------------------------------------
-
[INFO] [archetype:create]
-
[INFO] artifact org.apache.maven.archetypes:maven-archetype-quickstart: \
-
checking for updates from central
-
[INFO] Parameter: groupId, Value: org.sonatype.mavenbook.ch03
-
[INFO] Parameter: packageName, Value: org.sonatype.mavenbook
-
[INFO] Parameter: basedir, Value: /Users/tobrien/svnw/sonatype/examples
-
[INFO] Parameter: package, Value: org.sonatype.mavenbook
-
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
-
[INFO] Parameter: artifactId, Value: simple
-
[INFO] * End of debug info from resources from generated POM *
-
[INFO] Archetype created in dir: /Users/tobrien/svnw/sonatype/examples/simple
mvn 是Maven2的命令。archetype:create称为一个Maven目标 (goal)。如果你熟悉
Apache Ant,一个Maven目标类似于一个Ant目标 (target);它们都描述了将会在构建
中完成的工作单元 (unit of work)。而像-Dname=value这样的对是将会被传到目标中
的参数,它们使用-D属性这样的形式1,类似于你通过命令行向Java虚拟机传递系统属
性。archetype:create这个目标的目的通过archetype快速创建一个项目。在这里,一个
archetype被定义为“一个原始的模型或者类型,在它之后其它类似的东西与之匹配;
一个原型(prototype)”。Maven有许多可用的archetype,从生成一个简单的Swing应
用,到一个复杂的Web应用。本章我们用最基本的archetype来创建一个入门项目的骨
架。这个插件的前缀是“archetype”,目标为”create”。
我们已经生成了一个项目,看一下Maven在simple目录下创建的目录结构:
- simple/
-
simple/pom.xml·
-
/src/
-
/src/main/
-
/main/java
-
/src/test/
-
/test/java
这个生成的目录遵循Maven标准目录布局,我们之后会去看更多的细节,但是,现在让
我们只是尝试了解这些基本的目录。
¶ Maven Archtype插件创建了一个与artifactId匹配的目录——simple。这是项目的
基础目录。
· 每个项目在文件pom.xml里有它的项目对象模型 (POM)。这个文件描述了这个项
目,配置了插件,声明了依赖。
我们项目的源码了资源文件被放在了src/main目录下面。在我们简单Java项目这
样的情况下,这个目录包含了一下java类和一些配置文件。在其它的项目中,它
可能是web应用的文档根目录,或者还放一些应用服务器的配置文件。在一个Java
项目中,Java类放在src/main/java下面,而classpath资源文件放在src/main/
resources下面。
¹ 我们项目的测试用例放在src/test下。在这个目录下面,src/test/java存放像
使用JUnit或者TestNG这样的Java测试类。目录src/test/resources下存放测试
classpath资源文件。
Maven Archtype插件生成了一个简单的类org.sonatype.mavenbook.App,它是一个仅有
13行代码的Java,所做的只是在main方法中输出一行消息:
- package org.sonatype.mavenbook;
-
/**
-
* Hello world!
-
*
-
*/
-
public class App
-
{
-
public static void main( String[] args )
-
{
-
System.out.println( "Hello World!" );
-
}
最简单的Maven archetype生成最简单的Maven项目:一个往标准输出打印“Hello
World”的程序。
想要构建打包这个应用,在包含pom.xml的目录
下运行mvn install
- $ mvn install
-
[INFO] Scanning for projects...
-
[INFO] ----------------------------------------------------------------------------
-
[INFO] Building simple
-
[INFO] task-segment: [install]
-
[INFO] ----------------------------------------------------------------------------
-
[INFO] [resources:resources]
-
[INFO] Using default encoding to copy filtered resources.
-
[INFO] [compiler:compile]
-
一个简单的Maven项目
-
23
-
[INFO] Compiling 1 source file to /simple/target/classes
-
[INFO] [resources:testResources]
-
[INFO] Using default encoding to copy filtered resources.
-
[INFO] [compiler:testCompile]
-
[INFO] Compiling 1 source file to /simple/target/test-classes
-
[INFO] [surefire:test]
-
[INFO] Surefire report directory: /simple/target/surefire-reports
-
-------------------------------------------------------
-
T E S T S
-
-------------------------------------------------------
-
Running org.sonatype.mavenbook.AppTest
-
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.105 sec
-
Results :
-
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
-
[INFO] [jar:jar]
-
[INFO] Building jar: /simple/target/simple-1.0-SNAPSHOT.jar
-
[INFO] [install:install]
-
[INFO] Installing /simple/target/simple-1.0-SNAPSHOT.jar to \
-
~/.m2/repository/org/sonatype/mavenbook/ch03/simple/1.0-SNAPSHOT/ \
-
simple-1.0-SNAPSHOT.jar
你已经创建了,编译了,测试了,打包了,并且安装了(installed)最简单的Maven项
目。在命令行运行它以向你自己验证这个程序能工作。
- $ java -cp target/simple-1.0-SNAPSHOT.jar org.sonatype.mavenbook.App
-
Hello
阅读(6537) | 评论(0) | 转发(0) |