Maven 是一个用于java项目的构建工具。它加快了java开发的构建过程。Maven是持续构建集成的Java工具之一。
Maven有预定义的阶段或目标。目标类似于蚂蚁的目标。开发人员将调用目标来完成他们的任务。
首先,请确保从Apache软件中下载maven并安装它。如果您不确定如何操作,可以查看安装maven。在使你的java项目实施Maven作为构建工具时,需要考虑哪些事项:
- 项目对象模型文件
- java项目的文件夹结构
使用命令行创建maven项目
首先,使用maven archetype plugin 创建一个maven模板项目。
该原型插件为Web应用、java应用和企业应用提供了不同的模板
archetype:generate 实际目标是提供archetypeArtifactId=maven-archetype-quickstart ,生成基于jar的java应用。
mvn archetype:generate -DgroupId=com.techrocksz -DartifactId=HelloWorld -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Output of this mvn command:-
E:\techrocksz>mvn archetype:generate -DgroupId=com.techrocksz -DartifactId=HelloWorld -DarchetypeArtifactId=maven-archetype-quickstart
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO] task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[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:generate]
[INFO] Generating project in Interactive mode
Define value for version: 1.0-SNAPSHOT: : 1.0.0-SNAPSHOT
Confirm properties configuration:
groupId: com.techrocksz
artifactId: HelloWorld
version: 1.0.0-SNAPSHOT
package: com.techrocksz
Y: : Y
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.techrocksz
[INFO] Parameter: packageName, Value: com.techrocksz
[INFO] Parameter: package, Value: com.techrocksz
[INFO] Parameter: artifactId, Value: HelloWorld
[INFO] Parameter: basedir, Value: E:\techrocksz
[INFO] Parameter: version, Value: 1.0.0-SNAPSHOT
[INFO] ********************* End of debug info from resources from generated POM ***********************
[INFO] OldArchetype created in dir: E:\techrocksz\HelloWorld
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30 seconds
[INFO] Finished at: Fri Dec 02 10:47:29 GMT+05:30 2011
[INFO] Final Memory: 8M/254M
[INFO] ------------------------------------------------------------------------
上述命令创建了HelloWorld 应用程序。
首先进入项目目录结构。
在根文件夹中,我们有一个名为src 的文件夹和文件pom.xml ,同时我们还有以下子目录
src\\main\\java:- 这个文件夹包含你所有的java类src\\test\\java这个文件夹包含了所有与java测试相关的类。- 我们还有com\techrocksz\App.java和com\techrocksz\AppTest.java文件,这是一个HelloWorld应用程序和它的测试类。
用命令行创建的pom.xml样本:-
Maven使用pom.xml,其中包含关于项目的所有细节以及配置细节。
pom.xml pom.xml是一个项目对象模型配置文件。
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 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.techrocksz</groupid>
<artifactid>HelloWorld</artifactid>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>HelloWorld</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupid>junit</groupid>
<artifactid>junit</artifactid>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
在上面的例子中,groupId:代表项目的包,ExampleDemo-1.0.0.jar文件是在这里创建的。
artifactId: 是项目名称以及模块的jar/war名称。
packaging 指定该模块是web应用程序(即war)还是java模块(即jar)。如果没有指定打包选项,maven将其视为jar模块。
dependencies这里我们写了App,默认情况下JUnit依赖被添加到样本项目中。
运行Maven项目:-
以下是运行Maven项目并安装所有依赖项的步骤:
- 首先进入应用程序,使用
cd HelloWorld - 接下来,运行
mvn clean install命令来清理、编译和安装依赖项。
maven执行过程:-
我们已经看到,在pom.xml中配置了repositories 和dependencies 的位置。
当你第一次运行mvn clean install ,它会尝试从仓库下载不同的插件和依赖,并将这些依赖复制到一个文件夹(你的文档和设置文件夹的用户配置文件(即C:\Documents and Settings\username\.m2\repository)。
这在第一次是很耗时的,因为它试图将你所有的插件下载到你的本地仓库。下一次开始,它将下载那些已经下载的jar并快速执行。
下面是该命令的输出:
`E:\techrocksz\HelloWorld>mvn clean install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building HelloWorld
[INFO] task-segment: [clean, install]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] Deleting directory E:\techrocksz\HelloWorld\target
[INFO] [resources:resources]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory E:\techrocksz\HelloWorld\src\main\resources
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to E:\techrocksz\HelloWorld\target\classes
[INFO] [resources:testResources]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory E:\techrocksz\HelloWorld\src\test\resources
[INFO] [compiler:testCompile]
[INFO] Compiling 1 source file to E:\techrocksz\HelloWorld\target\test-classes
[INFO] [surefire:test]
[INFO] Surefire report directory: E:\techrocksz\HelloWorld\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.techrocksz.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]
[INFO] Building jar: E:\techrocksz\HelloWorld\target\HelloWorld-1.0.0-SNAPSHOT.jar
[INFO] [install:install]
[INFO] Installing E:\techrocksz\HelloWorld\target\HelloWorld-1.0.0-SNAPSHOT.jar to C:\Documents and Settings\kinturu\.m2\repository\com\techrocksz\HelloWorld\1.0.0-SNAPSHOT\HelloWorld-1.0.0-SNAPSHOT.j
ar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Fri Dec 02 11:58:46 GMT+05:30 2011
[INFO] Final Memory: 15M/254M
[INFO] ------------------------------------------------------------------------
`
最后,你的模块HelloWorld-1.0.0-SNAPSHOT.jar被创建。
现在任何其他应用都可以使用这个模块了。最后,开始学习maven。
settings.xml 必须在文件夹 。C:\\Documents and Settings\\username\\.m2\\
下面是settings.xml 的例子
<proxies>
<!-- Http Proxy setting configuration-->
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy-hostname.com</host>
<port>80</port>
<nonProxyHosts>otherhosts.com</nonProxyHosts>
</proxy>
<!-- HTTPS Proxy configuration details -->
<proxy>
<id>optional</id>
<active>true</active>
<protocol>https</protocol>
<username>username</username>
<password>password</password>
<host>proxy-hostname.com</host>
<port>80</port>
<nonProxyHosts>otherhosts.com</nonProxyHosts>
</proxy>
</proxies>
在Eclipse中,创建一个项目是非常容易的。
以下是具体步骤
- 在文件菜单中,选择新项目,会打开一个新窗口,如下图所示

选择Maven - Maven项目
- 点击 "下一步 "按钮,在下一个窗口选择默认值,一个窗口显示
Select an Archetype,如下图所示

- 下一个窗口,请输入
Group Id,Artifact Id和version的详细信息。

如果您有任何问题,请留下评论。