Maven使用实战

来源:互联网 发布:web service 数据库 编辑:程序博客网 时间:2024/05/17 17:56

Maven概述

 

1. Maven默认配置

1.1 默认目录结构

java代码位置src/main/java

资源文件位置src/main/resources

更多默认结构参见

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

 

1.2 默认工作目录

WindowsXP中,位置为C:/Documents and Settings/<username>/.m2

Unix中,位置为$HOME/.m2

如果想更改默认的工作目录,可以在$HOME目录下新建.mavenrc文件,加入以下内容

MAVEN_OPTS=-Duser.home=/<path>/lee

比如多个用户使用同一个用户名登陆到/home/development目录下的时候,可以给maven建立自己的目录。

具体步骤可以如下:

a) 在目录/home/development/lee下建立.mavenrc文件,加入user.home

b) 调用mvn命令前重设HOME目录为自己的目录,如/home/development/lee

 

其中repository目录包含下载的jar文件。

可以在.m2目录下建立setting.xml文件,设置用户配置信息。

如设置代理

<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>[PROXY_HOST] </host>
      <port>[PROXY_PORT] </port>
    </proxy>
  </proxies>
</settings>

参见http://maven.apache.org/settings.html

 

1.3 查看默认配置

在有效的maven配置目录下运行命令

mvn help:effective-pom

将会列出默认的maven配置

 

1.4 常用参数意义

groupId: 组织名称

artifactId: 项目名称

pachaging: 包类型,如jar,war等

version: 版本


2. Maven初步

2.1 运行 Maven 自带的例子

c:/>安装好maven后,既可运行自带的例子

mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app -DartifactId=my-app

在当前目录下生成my-app文件夹,可以查看详细信息。

 

2.2 用Maven默认配置编译工程

1) 建立eclipse工程,假设工程名称为MavenTest,按照Maven默认目录结构建立目录及测试文件。

src/main/java/org/flypig/StandardTest.java

2) 在工程目录下创建pom.xml文件,可由Maven自带的例子获得,注释掉junit dependency,可以根据需要修改groupId,artifactId,version,name元素,比如

  <groupId>org.flypig</groupId>
  <artifactId>MvnTest</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>MyMavenTest</name>

3) 进入工程目录,运行如下命令

mvn compile

第一次运行时,Maven会下载很多文件,下载完成后就可以了。

最后提示

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2:01.585s
[INFO] Finished at: Thu Dec 09 12:01:12 CST 2010
[INFO] Final Memory: 3M/15M
[INFO] ------------------------------------------------------------------------

表示成功。

4) 在工程目录下会生成target目录,包含生成的jar文件。

5) 在工程目录下运行命令

mvn exec:java -Dexec.mainClass=org.flypig.StandardTest

即可看到执行结果。

6) 使用 mvn clean 清除target

 

 

3. 生命周期和目标

Maven默认生命周期祥见

http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

 

Maven的一个生命周期由若干阶段(Phase)组成,每个阶段又由若干个目标(Goal)组成。Maven通过配置plugin来把生命周期,阶段和目标结合在一起。

比如

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>

        <version>2.1</version>
        <configuration>
          <outputDirectory>${target.lib.dir}</outputDirectory>
        </configuration>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
定义了在默认的生命周期中,在prepare-package阶段,执行目标copy-dependencies。

这个配置代表把用到的依赖jar包统统拷贝到自定义的目录${target.lib.dir}里

 

4. pom文件详解

4.1 添加属性

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <src.dir>./src</src.dir>
  </properties>

添加了默认的build编码和src.dir属性。

 

4.2 更改默认配置

1) 更改默认源代码目录

 <sourceDirectory>${src.dir}</sourceDirectory>

2) 更改目标目录

<directory>${target.dir}</directory>   

3) 更改资源文件目录

    <resources>
      <resource>
        <directory>${resource.dir}</directory>
      </resource>
    </resources>
4) 更改生成的文件名称(jar,war,etc)

<finalName>YourFileName</finalName>

 

4.3 插件配置

Maven有很多默认插件,什么都不配置的话,将执行默认行为。

如果需要修改参数,在插件的configuration元素下增加参数。

以下列举了常用的插件配置。

1) 更改编译目标jdk版本

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.4</source>
          <target>1.4</target>
        </configuration>
     
      </plugin>


2) 增加manifest.mf文件,并且把当前目录作为classpath目录

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
          <archive>
            <manifestEntries>
              <Class-Path>. </Class-Path>
            </manifestEntries>
            <manifest>
              <mainClass>org.lee.Main</mainClass>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib</classpathPrefix>
            </manifest>
          </archive>
        </configuration>
      </plugin>
如果addClasspath为true,表示将pom.xml文件中的所有依赖都写入manifest文件中。

manifestEntries下的每一个元素名称对应manifest.mf文件中一行。这里会生成

Class-Path: .

以下是生成的manifest.mf文件片断

Main-Class: org.lee.Main

Class-Path: . lib/aopalliance-2.0.jar

 

3) 拷贝依赖jar到指定目录,并从生成的jar包中排除匹配模式文件

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <outputDirectory>${target.lib.dir}</outputDirectory>
          <excludes>
            <exclude>**/*.properties</exclude>
            <exclude>**/*.html</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

4) 使用ant插件

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.3</version>
        <configuration>
          <tasks>
            <delete file="${log4j.tofile}"/>
            <copy file="${log4j.fromfile}" tofile="${log4j.tofile}"/>
          </tasks>
        </configuration>
        <executions>
          <execution>
            <phase>process-resources</phase>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

 

4.4 依赖配置

1) 增加依赖

Maven通过groupId, artifactId 和 version 来定位仓库中的文件。

只要在dependencies元素下加入

   <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.12</version>
    <type>jar</type>
    <scope>compile</scope>
   </dependency>
即可,type和scope可以省略

运行时Maven会自动从远程下载对应文件。


2) 使用本地jar文件

   <dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.3</version>
    <scope>system</scope>
    <systemPath>${system.lib.dir}/commons-lang.jar</systemPath>
   </dependency>

这种情况下必须指定scope为system,systemPath为本地路径。

 

 

附:

常用Maven命令

1) 生成eclipse工程

mvn eclipse:eclipse

 

原创粉丝点击