Maven基础(总结上)

1.  Maven简介

Maven不仅是构建工具,还是一个依赖管理工具项目信息管理工具。它提供了中央仓库,能帮我自动下载构件。Maven给Java类世界引入经纬,让它们变得有秩序, 于是我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题。

Maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何流行的开源类库。通过一些Maven的衍生工具(如Nexus),我们还能对其中进行 快速地搜索。只要定位了坐标,Maven就能帮助我们自动下载,省去了手工劳动。

使用Maven还能享受一个额外的好处,即Maven对于项目目录结构,测试用例命名方法等内容都有了既定的规则,只要遵循了这些成熟的规则,用户在项目间切换的时 候就免去了额外的学习成本,可以说是约定胜于配置。

2.  Maven 安装

这个比较简单,不会的,大家可以自己去查找相关的资料,有一点需要大家注意:有时候你所在公司基于安全考虑,要求你使用通过安全认证的代理访问因特网。这种 情况下,就需要为Maven配置HTTP代理,才能让它正常访问外部仓库,以下载所需要的资源。

首先确认自己无法直接访问公共的Maven中央仓库,直接运行命令ping repo1.maven.org 可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通。比如现在 一个IP地址为218.14.227.197,端口为3128的代理服务,我们可以运行telnet 218.14.227.1973218来检测该地址端口是否通畅。如果得到出错的信息,需要先获取正确的代 理服务信息;如果telnet连接正确,则输入ctrl+],然后q,回车,退去即可。

检查完毕之后,编辑~/.m2/setting.xml文件(如果没有该文件,则复制$M2_HOME/conf/setting.xml),添加的代理配置如下:

<proxies>

   <proxy>

             <id>my-proxy</id>

             <active>true</active>

             <protocol>http</protocol>

              <host>218.14.227.197</host>

             <port>3128</port>

             <username>***</username>

        <password>***</password>

             <nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>

    </proxy>

</proxies>

3.  Maven 使用入门

3.1 Maven构建的中央仓库查询地址

https://repository.sonatype.org/

3.2 Maven构建的jdk版本设置

在使用Maven构建的项目的过程中,我们需要使用-source 5或更高版本以启动注释,这是maven初学者常常遇到的一个问题。由于历史原因,Maven的核心插件之一 ——compiler插件默认只支持编译java1.3,因此需要配置该插件使用其支持java5或java6,主pom文件,见下面代码清单:

<project>

  <build>

        <plugins>

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

             <artifactId>maven-compiler-plugin</artifactId>

             <configuration>

                  <source>1.5</source>

                  <target>1.5</target>

             </configuration>

       </plugins>

  </build>

</project>

3.3打包类型设置

Maven打包和运行:mvn clean package,如果没有指定打包类型, 则使用默认的打包类型jar,打包名称是根据artifact-version.jar规则进行命名,如有需要,还可以用 finalName来自定义该文件的名称,例如pac项目中有这样的配置:

3.4 maven主要命令

Maven最主要的命令有:mvn clean compilemvn clean testmvn clean packagemvn clean install。执行test命令之前是会执行compile的,执行package之前是 会执行test的,执行install之前会执行package。可以在任何一个Maven项目中执行这些命令,而且我们已经清楚它们是用来做什么的。

3.5 项目包含main方法的处理

如果一个类中含有main方法,在默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar文件中的META- INF/MANIFEST.MF文件,将无法看到Main-Class一行)。为了生成可执行的jar,需要借助maven-shade-plugin,配置该插件如下:

<plugin>

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

  <artifactId>maven-shade-plugin</artifactId>

  <version>1.2.1</version>

  <executions>

       <execution>

             <phase>package</phase>

             <goals>

                  <goal>shade</goal>

</goals>

<configuration>

      <transformers>

            <transformerimplementation=”org.apache.maven.plugins.resource.ManifestResourceTransformer”>

            <mainClass>com.juvenxu.mvnbook.helloworld.HelloWorld</mainClass>

      </transformers>

   </configuration>

        </execution>

  </executions>

</plugin>

3.5 使用Archetype生成项目骨架

如果是maven3,简单地运行:mvn archetype:generate

如果是maven2, 运行:

mvn org.apache.maven.plugins:maven-archetype-plugins:2.0-alpha-5:generate

接着maven会提示输入创建项目的groupId, artifactId, version以及包名package。如下输入并确认:

Define value for groupId:com.juvenxu.mvnbook

Define value for artifactId:hello-world

Define value for version: 1.0-SNAPSHOT

Define value forpackage:com.juvenxu.mvnbook::com.juvenxu.mvnbook.helloword

Confirm properties configuration:

groupId:com.juvenxu.mvnbook

artifactId:hello-word

version: 1.0-SNAPSHOT

package:com.junenxu.mvnbook.helloworld

Y::Y

    当然用m2eclipse来创建maven项目会更方便,不过在父模块的时候,一定要把packing类型修改为pom,默认创建的是jar,即把<packing>jar</packing>修改为 <packing>pom</packing>

你可能感兴趣的:(Maven基础(总结上))