linux安装maven

来源:互联网 发布:js ios 时间戳格式化 编辑:程序博客网 时间:2024/04/30 05:23

一.安装

1.1 官网下载地址:http://maven.apache.org/download.cgi,这里下载最新版apache-maven-3.3.9-bin.tar.gz

1.2 安装前需要安装JDK1.7或更新版本,这里已安装JDK1.8

[root@besttone-003-0001 ~]# java -version   java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

1.3 解压maven安装文件

[root@besttone-003-0001 apache-maven-3.3.9]# pwd/data/apache-maven-3.3.9[root@besttone-003-0001 apache-maven-3.3.9]# ll -htotal 44Kdrwxr-x--- 2 root root 4.0K Jul 20 15:10 bindrwxr-x--- 2 root root 4.0K Jul 20 14:31 bootdrwxr-xr-x 3 root root 4.0K Jul 24 17:01 confdrwxr-xr-x 3 root root 4.0K Jul 20 14:31 lib-rw-r--r-- 1 root root  19K Nov 11  2015 LICENSE-rw-r--r-- 1 root root  182 Nov 11  2015 NOTICE-rw-r--r-- 1 root root 2.5K Nov 11  2015 README.txt

1.4 配置环境变量,并使其生效

export M2_HOME=/data/apache-maven-3.3.9export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$SCALA_HOME/bin:$PATHexport MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

执行使其生效:source /etc/profile

1.5 查看安装情况

xiaoxiangdeMacBook-Pro:spring-context-support Simons$ mvn -vApache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: /usr/local/maven/apache-maven-3.3.9Java version: 1.7.0_79, vendor: Oracle CorporationJava home: /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jreDefault locale: zh_CN, platform encoding: UTF-8OS name: "mac os x", version: "10.11.4", arch: "x86_64", family: "mac"

1.6 默认本地仓库~/.m2/repository

执行mvn -v命令后,就会生成默认本地仓库文件夹:~/.m2,在maven中(即目录/usr/local/maven/apache-maven-3.3.9/conf/settings.xml)如果不配置localRepository,就是用该仓库,常用jar包就在~/.m2/repository目录下

[root@besttone-003-0001 ~]# ll .m2total 4drwxr-x--- 54 root root 4096 Jul 21 06:01 repository

1.7使用方法,可以使用mvn -h查看

[root@besttone-003-0001 ~]# mvn -husage: mvn [options] [<goal(s)>] [<phase(s)>]Options: -am,--also-make                        If project list is specified, also                                        build projects required by the                                        list -amd,--also-make-dependents            If project list is specified, also                                        build projects that depend on                                        projects on the list -B,--batch-mode                        Run in non-interactive (batch)                                        mode -b,--builder <arg>                     The id of the build strategy to                                        use. -C,--strict-checksums                  Fail the build if checksums don't                                        match -c,--lax-checksums                     Warn if checksums don't match -cpu,--check-plugin-updates            Ineffective, only kept for                                        backward compatibility -D,--define <arg>                      Define a system property

1.8 手动安装jar包到本地仓库

如果本地仓库缺少某个jar包,可以使用mvn install手动安装jar到本地仓库,命令格式:

mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar
  • 首选到http://mvnrepository.com/查找到需要的jar,如spring-context,搜索到后点击进入
  • 找到需要的版本,进入仓库链接

  • 下载jar到本地

  • 执行安装命令:
mvn install:install-file -Dfile=/Users/Simons/Downloads/spring-context-support-3.1.0.RELEASE.jar -DgroupId=org.springframework -DartifactId=spring-context-support -Dversion=3.1.0.RELEASE -Dpackaging=jar
  • 查看本地仓库,已经安装成功
xiaoxiangdeMacBook-Pro:~ Simons$ cd .m2/repository/org/springframework/spring-context-supportxiaoxiangdeMacBook-Pro:spring-context-support Simons$ ls3.1.0.RELEASE           maven-metadata-local.xml4.2.6.RELEASExiaoxiangdeMacBook-Pro:spring-context-support Simons$ 

二.概念

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

2.1.生命周期(lifecycle)和阶段(phase)

Maven的生命周期是抽象的,其中的具体任务都交由插件来完成,Maven定义了三套生命周期:clean、default、site,每个生命周期都包含了一些阶段(phase)。三套生命周期相互独立,但各个生命周期中的phase却是有顺序的,且后面的phase依赖于前面的phase。

2.1.1 clean生命周期

pre-clean:执行清理前的工作;clean:清理上一次构建生成的所有文件;post-clean:执行清理后的工作

2.1.2 default生命周期
最核心的,它包含了构建项目时真正需要执行的所有步骤

validateinitializegenerate-sourcesprocess-sourcesgenerate-resourcesprocess-resources    :复制和处理资源文件到target目录,准备打包;compile    :编译项目的源代码;process-classesgenerate-test-sourcesprocess-test-sourcesgenerate-test-resourcesprocess-test-resourcestest-compile    :编译测试源代码;process-test-classestest    :运行测试代码;prepare-packagepackage    :打包成jar或者war或者其他格式的分发包;pre-integration-testintegration-testpost-integration-testverifyinstall    :将打好的包安装到本地仓库,供其他项目使用;deploy    :将打好的包安装到远程仓库,供其他项目使用;

2.1.3 site生命周期

pre-sitesite:生成项目的站点文档;post-sitesite-deploy:发布生成的站点文档

2.2插件(plugin),本地仓库中插件所在位置:
.m2/repository/org/apache/maven/plugins,可查看.

[root@besttone-003-0001 ~]# ll .m2/repository/org/apache/maven/pluginstotal 128drwxr-x--- 3 root root  4096 Jul 20 16:19 maven-antrun-plugindrwxr-x--- 3 root root  4096 Jul 20 16:20 maven-assembly-plugindrwxr-x--- 3 root root  4096 Jul 20 16:20 maven-clean-plugindrwxr-x--- 3 root root  4096 Jul 20 16:21 maven-compiler-plugindrwxr-x--- 4 root root  4096 Jul 20 16:21 maven-dependency-plugindrwxr-x--- 3 root root  4096 Jul 20 16:20 maven-deploy-plugindrwxr-x--- 3 root root  4096 Jul 20 16:21 maven-docck-plugindrwxr-x--- 3 root root  4096 Jul 20 16:18 maven-enforcer-plugindrwxr-x--- 3 root root  4096 Jul 20 16:21 maven-failsafe-plugindrwxr-x--- 3 root root  4096 Jul 20 16:21 maven-gpg-plugindrwxr-x--- 3 root root  4096 Jul 24 18:15 maven-help-plugindrwxr-x--- 3 root root  4096 Jul 20 16:20 maven-install-plugindrwxr-x--- 3 root root  4096 Jul 20 16:21 maven-invoker-plugindrwxr-x--- 3 root root  4096 Jul 20 16:19 maven-jar-plugindrwxr-x--- 3 root root  4096 Jul 20 16:19 maven-javadoc-plugin-rw-r----- 1 root root 13135 Jul 24 18:14 maven-metadata-central.xml-rw-r----- 1 root root    40 Jul 24 18:14 maven-metadata-central.xml.sha1drwxr-x--- 3 root root  4096 Jul 20 16:21 maven-plugin-plugindrwxr-x--- 9 root root  4096 Jul 20 16:21 maven-pluginsdrwxr-x--- 3 root root  4096 Jul 20 16:22 maven-release-plugindrwxr-x--- 3 root root  4096 Jul 20 16:15 maven-remote-resources-plugindrwxr-x--- 3 root root  4096 Jul 20 16:22 maven-resources-plugindrwxr-x--- 3 root root  4096 Jul 20 16:22 maven-scm-plugindrwxr-x--- 3 root root  4096 Jul 20 16:22 maven-scm-publish-plugindrwxr-x--- 3 root root  4096 Jul 20 16:18 maven-shade-plugindrwxr-x--- 3 root root  4096 Jul 20 16:15 maven-site-plugindrwxr-x--- 3 root root  4096 Jul 20 16:18 maven-source-plugindrwxr-x--- 3 root root  4096 Jul 20 16:19 maven-surefire-plugin-rw-r----- 1 root root   186 Jul 24 18:14 resolver-status.properties

2.2.1 插件(plugin)和目标(goal)

速记符号:pluginId:goalId,
一对多关系,一个maven插件是由一个或者多个目标集合组成的,一个目标是一个明确的任务,它可以作为单独的目标运行,或者作为一个大的构建的一部分和其它目标一起运行。一个目标是Maven中的一个“工作单元(unit of work)”,例如编译源代码的source插件,有5个目标。

The Source Plugin has five goals:source:aggregate aggregrates sources for all modules in an aggregator project.source:jar is used to bundle the main sources of the project into a jar archive.source:test-jar on the other hand, is used to bundle the test sources of the project into a jar archive.source:jar-no-fork is similar to jar but does not fork the build lifecycle.source:test-jar-no-fork is similar to test-jar but does not fork the build lifecycle.

其中Maven已经对一些生命周期的阶段(phase)默认绑定了插件目标,如简写为package、install、deploy、test、compile
simple

2.2.2 用户也可以根据需要将已存在的任何插件目标绑定到任何生命周期的阶段,举例:

指定在package阶段添加源代码打包的功能

<build>        <plugins>            <plugin>                <!--指定源代码打包插件的坐标-->                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-source-plugin</artifactId>                <version>2.3</version>                <!--定义插件执行在哪些阶段执行哪些目标-->                <executions>                    <execution>                        <!---源代码打包插件在打包阶段执行-->                        <phase>package</phase>                        <!--源代码打包插件执行的目标,可以指定多个,只要插件支持-->                        <goals>                            <goal>jar</goal>                            <!--测试代码打包-->                            <!--                            <goal>test-jar</goal>                            -->                        </goals>                    </execution>                </executions>                <!--输出路径和文件名进行设置                <configuration>                    <outputDirectory>/absolute/path/to/the/output/directory</outputDirectory>                    <finalName>filename-of-generated-jar-file</finalName>                    <attach>false</attach>                </configuration>                -->            </plugin>        </plugins>    </build>

2.2.3自定义插件

2.2.4 插件仓库
跟其他构件一样,插件也是根据坐标存储在Maven仓库中。超级POM中Maven配置的默认插件远程仓库如下

<pluginRepositories>    <pluginRepository>      <id>central</id>      <name>Central Repository</name>      <url>http://repo.maven.apache.org/maven2</url>      <layout>default</layout>      <snapshots>        <enabled>false</enabled>      </snapshots>      <releases>        <updatePolicy>never</updatePolicy>      </releases>    </pluginRepository></pluginRepositories>

参考资料:http://www.cnblogs.com/luotaoyeah/p/3819001.html“>Maven的生命周期和插件

1 0
原创粉丝点击