- 論壇徽章:
- 0
|
開始一個新的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);它們都描述了將會在構(gòu)建 中完成的工作單元 (unit of work)。而像-Dname=value這樣的對是將會被傳到目標中 的參數(shù),它們使用-D屬性這樣的形式1,類似于你通過命令行向Java虛擬機傳遞系統(tǒng)屬 性。archetype:create這個目標的目的通過archetype快速創(chuàng)建一個項目。在這里,一個 archetype被定義為“一個原始的模型或者類型,在它之后其它類似的東西與之匹配; 一個原型(prototype)”。Maven有許多可用的archetype,從生成一個簡單的Swing應 用,到一個復雜的Web應用。本章我們用最基本的archetype來創(chuàng)建一個入門項目的骨 架。這個插件的前綴是“archetype”,目標為”create”。 我們已經(jīng)生成了一個項目,看一下Maven在simple目錄下創(chuàng)建的目錄結(jié)構(gòu):
- simple/
-
simple/pom.xml·
-
/src/
-
/src/main/
-
/main/java
-
/src/test/
-
/test/java
這個生成的目錄遵循Maven標準目錄布局,我們之后會去看更多的細節(jié),但是,現(xiàn)在讓 我們只是嘗試了解這些基本的目錄。 ¶ Maven Archtype插件創(chuàng)建了一個與artifactId匹配的目錄——simple。這是項目的 基礎(chǔ)目錄。 · 每個項目在文件pom.xml里有它的項目對象模型 (POM)。這個文件描述了這個項 目,配置了插件,聲明了依賴。 我們項目的源碼了資源文件被放在了src/main目錄下面。在我們簡單Java項目這 樣的情況下,這個目錄包含了一下java類和一些配置文件。在其它的項目中,它 可能是web應用的文檔根目錄,或者還放一些應用服務(wù)器的配置文件。在一個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”的程序。
想要構(gòu)建打包這個應用,在包含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
你已經(jīng)創(chuàng)建了,編譯了,測試了,打包了,并且安裝了(installed)最簡單的Maven項 目。在命令行運行它以向你自己驗證這個程序能工作。
- $ java -cp target/simple-1.0-SNAPSHOT.jar org.sonatype.mavenbook.App
-
Hello
|
|