黄昏即黎明

18 04, 2006

Maven 2 简明学习指南(2)

JAVA综合 — 作者 HBearcat @ 17:00
Maven 2 简明学习指南(2)

项目文件:pom.xml

重要元素:

元素名

含义

project

maven 项目文件的最顶层的元素(根元素)。

modelVersion

POM所定义的项目或者项目组的版本号。此版本号一般不经常变动。

groupId

项目组的的唯一标识。在maven管理的项目中,一般是管理一群项目modelgroupid一般代表了这个项目群组。 例如org.apache.maven.plugins一般被设计为所有maven插件的groupid

artifactId

一个项目的唯一标识。此名字一般也在打包时,作为的包名字的前缀,一般的包名字为: <artifactId>-<version>.<extension>,例如: myapp-1.0.jar

packaging

此元素用来定义项目在打包时的类型,例如jarwarear等等。默认值为jar

Name

此元素用来定义项目的名称,这个名称一般主要用在项目产生的document中。

url

此元素用来定义在什么网站上可以看到这个项目,这个名称一般主要用在项目产生的document中。

description

此元素用来对这个项目作简要的描述,这个名称一般主要用在项目产生的document中。

依赖的定义:

1. jar包的依赖:

<dependency>

<groupId>dom4j</groupId>

<artifactId>dom4j</artifactId>

<version>1.6</version>

<type>jar</type>

<scope>runtime</scope>

</dependency>

备注:这个jar一般在本地repository中。并有特殊的版本标记,会对应到指定的版本。

2. 项目之间的依赖:

<dependency>

<groupId>com.bankcomm.crms</groupId>

<artifactId>crms-biz-task</artifactId>

<version>1.0-SNAPSHOT</version>

</dependency>

依赖范围(Dependency Scope

常用的依赖范围有三种 compiletestruntime

Compile 此依赖指明在classpath中可以得到这个jar。把这个classpath既包括运行时的classpath也包括编译时的classpath。当未指定scope时,scope默认是compile

Test 此依赖指明该构件在项目正常的应用中不需要,只是用在项目测试用例的变成和执行过程中

Runtime scope值指明该构件在运行时的classpath中,不在编译时的classpath中。

distributionManagement

当开发人员想在作deploy动作时,deploy到远程repository中时。需要用distributionManagement标签指定远程repository

<!-- Enabling the use of FTP -->

<distributionManagement>

<repository>

<id>ftp-repository</id>

<url>ftp://repository.mycompany.com/repository</url>

</repository>

</distributionManagement>

<build>

<extensions>

<extension>

<groupId>org.apache.maven.wagon</groupId>

<artifactId>wagon-ftp</artifactId>

<version>1.0-alpha-3</version>

</extension>

</extensions>

</build>

说明:

<build>…</build>之间用来指定在build时所要用到的插件。

<distributionManagement>…</distributionManagement>用来定义需要deploy到远程repository。其中的ID要和setting.xml定义server相对应。因为在server中定义关于这个远程deploy环境的权限验证和安全方面的信息,例如 用户名和密码。

创建maven项目

1. 创建单一的maven项目:

例如:

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

执行成功后,将在当前目录产生项目文件:pom.xml, 内容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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.mycompany.app</groupId>

<artifactId>my-app</artifactId>

<packaging>jar</packaging>

<version>1.0-SNAPSHOT</version>

<name>Maven Quick Start Archetype</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>

生成的目录结构如下:

my-app

|-- pom.xml

`-- src

|-- main

| `-- java

| `-- com

| `-- mycompany

| `-- app

| `-- App.java

`-- test

`-- java

`-- com

`-- mycompany

`-- app

`-- AppTest.java

2. 创建包含多个modulesmaven项目。

举例说明:

我们要创建的目录结构如下:

+- pom.xml

+- my-app

| +- pom.xml

+- my-webapp

| +- pom.xml

所以我们首先在父层目录创建文件pom.xml.

<project>

<modelVersion>4.0.0</modelVersion>

<groupId>com.mycompany.app</groupId>

<version>1.0-SNAPSHOT</version>

<artifactId>app</artifactId>

<packaging>pom</packaging>

<modules>

<module>my-app</module>

<module>my-webapp</module>

</modules>

</project>

其他命令

命令

功能

mvn compile

编译

mvn test

执行所有的test用例

mvn test-compile

编译所有的test用例

mvn package

编译后打包

mvn install

将编译和打包好的文件发布到本地repository

mvn idea:idea

mvn eclipse:eclipse

创建项目文件,如果要创建eclipse项目文件。用mvn eclipse:eclipse

在命令行下操作很痛苦,要自己编写很多代码,很不方便,下面介绍基于EclipseMaven插件的使用,可以大大提高效率:

首先到http://maven.apache.org/eclipse-plugin.html 下载最新的插件,安装到Eclipse,具体安装过程很简单,这里就不说了,安装好后重起Eclipse,打开windows-->preferences在左边的菜单树里找到Maven配置本地储藏室路径,不改默认在C:Documents and Settingsusername%.m2 其他保持默认就可以了 应用后保存设置,如图:

新建工程MyProject,在工程上点鼠标右键在右键菜单选择 Maven 2 --> Enable弹出界面如图:

1.jpg

点完成,将会在工程的根目录产生一个pom.Xml的配置文件,然后我们开始添加我们需要使用到的jar包,还是在工程名上点鼠标右键,在右键菜单中选择Maven 2 --> Add Dependency 弹出界面如图:

2.jpg

如果相应的jar版本在本地储藏室没有找到,Maven将通过互联网下载相应版本的jar文件到本地储藏室并复制一份到lib目录下。

3.jpg

一些高级应用请查看http://maven.apache.org/guides/index.html 上的详细说明,介绍本书《Maven A Developers Notebook》是基于Maven 1 的,不过很多都可以借鉴过来,很好的书。


最新回复


发表评论







Powered by pLog