Maven配置和使用(一)

Maven配置和使用

  • Maven简介
    如果我要是进行归类的,也会把Maven规划为SCM软件的一种,它也属于一种项目的管理工具,但是与传统的SVN等工具不同的是,Maven主要是进行开发包的管理。
    现在的软件项目的开发绝对不可能自己从头写到尾,因为在这之中需要引入大量的第三方开发工具包,而我们对于这些开发包的引用,最初的做法:下载下来*.jar文件,而后在需要的地方拷贝到项目的WEB-INF/lib目录之中就可以使用了,但是这种方式很多时候并不方便,如果说现在开发包的版本很多。
    所以为了解决这样的问题,专门由Apache提供了一个开发包的工具管理—–Maven
    Maven除了开发包管理之外还可具备项目的编译、测试等功能。
    Maven在实际使用中–主要是开发包的管理
    下面首先来观察一个简单的开发包管理操作:
    这里写图片描述

这里写图片描述

这里写图片描述
此时最终会形成一个cn.mldn.em的总的开发包。随后会开始进行项目的构建,但是这个的构建过程取决于网络问题。
在整个的Maven之中,对于所有的开发包管理实际上都是依靠了一个pom.xml文件完成的,这个文件可以实现开发包的版本切换,当然也可以进行一些连接的配置,或者是项目子模块的配置。

这里写图片描述

如果现在需要进行开发包的管理,那么可以登陆一个Maven仓库:http://mvnrepository.com/
范例:更换Junit版本
这里写图片描述

这里写图片描述

这里写图片描述
实际上Maven会把所有的开发包放在指定的目录之中:C:/User/用户名/.m2/repository
这个路径在后期是可以指定的

这里写图片描述

总结:
1.Maven适合于做开发包的管理
2.如果所有的开发者都通过网络下载开发包,那么这个速度实在是不敢恭维
3.eclipse如果要建立Maven项目,JDK版本是有差异的。

  • 在windows中配置maven

如果要想进行Maven的使用,那么必须登陆:maven.apache.org上取得Maven开发包。
这里写图片描述

下载首页:
外国的官网项目代码一般都有相关的相关文档手册
本次使用的开发包版本为:3.5.4版本,但是需要记住的是从Maven2.x开始,Maven分为两种版本:Maven1、Maven2。现在使用的都是Maven2的版本。

配置的话:Configure文档

下载版本:
这里写图片描述

linux下用的tar.gz包,也有windows下的zip包
相关文档说明:
这里写图片描述

现在是在windows下进行配置:所以此次使用的版本为:apache-maven-3.5.4-bin.zip,将其进行解压缩。

1.Maven本身需要JDK的配置支持,所以首先一定要在系统环境之中配置JAVA_HOME(JDK安装目录)
2.将Maven的开发工具包的命令设置到Path属性之中:
–Maven的命令路径:E:\Maven\apache-maven-3.5.4-bin\apache-maven-3.5.4\bin
3.测试Maven的命令是否已经配置成功,随意打开一个命令行窗口,输入:”mvn -v”:
如果报错:
这里写图片描述
经查,此问题是由于JDK版本过低导致,最新的MAVEN 3.3.3 必须由JDK1.7以上支持,
所以更改JavaHome为Jdk1.7以上即可。

这里写图片描述

表示Maven已经配置完成。(描述整个Maven当前的环境信息)
这样并不意味着配置全部完成。

4.如果要想进行Maven的操作,默认情况下使用的是都是远程的国外的仓库进行连接,那么这个速度实在是太慢了,所以为了让开发包的下载速度变快,建议将现在的仓库变为国内仓库(不用过墙):
如果要想修改为国内仓库,可以使用oschina的提供的Maven仓库,仓库地址:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
   <mirrors>
    <mirror>
      <id>localMaven</id>
      <mirrorOf>*</mirrorOf>
      <name>MyMaven</name>
      <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
  </mirrors>
</settings>

随后修改Maven开发包中的”conf/settings.xml”文件:
E:\Maven\apache-maven-3.5.4-bin\apache-maven-3.5.4\conf\settings.xml
把下图的内容修改:
这里写图片描述

这里写图片描述

表示配置好了国内仓库

注意这个国内仓库 已经不能用了:

<mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

或者:
这里写图片描述

https://my.oschina.net/fdblog/blog/546938
https://blog.csdn.net/lovoo/article/details/77881467
配置本地仓库路径地址:
这里写图片描述

<localRepository>E:\Maven\repository</localRepository>

这样再进行开发包下载的时候速度就会得到很大的提升,如果你不配置,那么整个程序的执行速度就会非常慢,(因为伟大的防火墙在阻挠)

5.随后利用Maven进行一次项目的开发编写操作,本次先使用记事本的方式完成,目的是希望可以输出”hello world”!

在E盘上建立一个javawork目录,所有的信息都保存在此目录之中:
进入到javawork目录之中(cd javawork),随后需要建立一个文件,在我们的maven里面所有的java源程序都要求保存在src目录下(src/main/java/包名称)
E:\javawork>mkdir src\main\java\cn\mldn
在这个 src\main\java\cn\mldn目录下新建一个Hello.java的文件
package cn.mldn
public class Hello{
public static void main(String args[]){
System.out.println(“Hello World!”);
}
}
如果要想编译,还需要在E:\javawork目录下存在有一个pom.xml文件:这个文件直接复制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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.mldn</groupId>
  <artifactId>em</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>em</name>
  <url>http://maven.apache.org</url>

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

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

在此文件之中有以下的几个重要的配置信息:
<modelVersion>4.0.0</modelVersion>
这个表示POM模块版本信息(通常都是4.0.0)
<groupId>cn.mldn</groupId>
描述的是项目所属的组织名称,现在是cn.mldn
<artifactId>em</artifactId>
描述的是项目的名称,最后会与groupId结合作为包名称
<version>0.0.1-SNAPSHOT</version>
描述项目的版本号
<packaging>jar</packaging>
最终项目的发布形式,一般都是jar或者war;(war包指的是web的应用文件)

6.对项目进行打包编译:(项目打包编译必须要有pom.xml文件的支持,在路径下必须存在此文件)
cd javawork
mvn compile
编译时会从远程下载jar包,一次执行,多次使用

这里写图片描述

7.这个时候已经完成了代码的编译;
此时会在“e:\javawork”目录下生成一个target的子目录,这个子目录保存的就是所有编译后的程序文件 Hello.class

8.将生成的*.class文件打包成一个jar包的形式出现(还是在pom.xml所在的目录):

mvn package
也会从网络上下载需要jar包,一次下载,多次使用

这里写图片描述

这里写图片描述

这里写图片描述

于此同时,本地仓库的位置下的jar包会逐渐增大(几个G很正常):
由于之前配置了setting.xml下的本地仓库的位置:
E:\Maven\repository
所以
这里写图片描述

表示打成了jar包(可运行)
此时的jar文件保存在了“e:\javawork\target”目录下;此时的jar宝名称为:em-0.0.1-SNAPSHOT.jar
这个名称是与pom.xml中配置的有关系 版本号0.0.1-SNAPSHOT name em有关

9.直接执行jar文件(在javawork目录下运行)
java -cp target/em-0.0.1-SNAPSHOT.jar cn.mldn.Hello

这里写图片描述

这样就完成了整个的Maven基础的操作开发,所以现在可以发现,Maven可以负责开发包的管理,可以负责项目的打包生成。通过Maven管理的项目软件,非常适合于现在的开源环境,因为对于项目的打包会非常的容易处理。
很多包都是以em-0.0.1-SNAPSHOT.jar 的形式出现。现在几乎所有的项目都是用Maven进行开发包的管理和控制,以及打包。
所有的开发团队要求用Maven进行开发编写
maven还可以写测试
重点:—对于开发包进行有效管理

  • 在Linux下配置Maven
    本次在Linux下的Maven配置和之前在windows下的配置区别不大:
    1.需要准备出Linux下的Maven开发包:
    apache-maven-3.5.4-bin.tar.gz,将开发包通过FTP上传到Linux之中
    2.上传之后开发包会保存在“/srv/ftp”目录之中,随后将其解压缩到“/usr/local”目录下
    前提:需要在此Linux系统之中准备好相应的JDK开发环境(JAVA_HOME)
    tar xzvf /srv/ftp/apache-maven-3.5.4-bin.tar.gz -C /usr/local
    3.为了方便配置建议将maven开发包的目录进行更名,
    mv apache-maven-3.5.4/ maven
    4.在环境配置文件之中,配置Maven的相关信息
    M2_HOME:是Maven2版本之后标记
    vim /etc/profile 修改系统环境变量属性
    在里面追加如下的内容:
    export M2_HOME = /usr/local/maven
    export PATH = P A T H : JAVA_HOME/bin:$M2_HOME/bin:

这里写图片描述

5.使用source命令,让配置立即生效:
source /etc/profile
6.随后继续使用“mvn -v”的命令来测当前的Maven是否工作正常

这里写图片描述

会显示Maven的版本信息以及jdk版本信息

7.下面需要进行仓库信息的配置,修改/usr/local/maven/conf/settings.xml文件
执行:vim /usr/local/maven/conf/settings.xm
找mirrors对应项,配置为国内本地仓库

8.保存退出之后下载在“/usr/local/”目录下创建javawork目录:而后在javawork目录里面需要有/src/main/java/cn/mldn/
建立相应的文件目录:
mkdir -p /usr/local/javawork//src/main/java/cn/mldn/
在/usr/local/javawork//src/main/java/cn/mldn/目录下创建Hello.java的文件:
vim Hello.java

将pom.xml文件拷贝到项目之中
通过ftp上传之后,随后拷贝到/usr/local/javawork/目录里边
此时pom.xml与src目录保存在同级别:
cp /srv/ftp/pom.xml /usr/local/javawork

9.对程序进行编译处理:
mvn compile
此时如果连不上一些仓库,可以修改为国内仓库
也可能是因为DNS没有配置
vim /etc/resolv.conf
追加:
nameserver 114.114.114.114
这里写图片描述

先测试 ping www.baidu.com
或者选择重启网卡
/etc/init.d/networking restart
之后继续执行 mvn compile
10.编译之后一定会在“/usr/local/javawork/target”目录下胜场class文件,而后将这些文件进行打包处理。
mvn package
11.生成*.jar文件之后就可以进行程序的直接执行:
java -cp target/em-0.0.1-SNAPSHOT.jar cn.mldn.Hello

此时就完成了在Linux下的Maven配置,基本的就成和windows相似。

关于静态IP:
1.Maven这种配置工具在各个平台下(Linux、Windows、Unix)
的使用都是类似的
2.在Linux中静态IP的配置
需要打开一个静态IP的配置文件
vim /etc/network/interfaces (描述整个Linux的静态配置)
在这个文件中如果是自动的IP地址获取,则信息如下:
这里写图片描述

主要是DHCP

如果要想进行手工的IP配置,则需要将动态IP注释掉,而后增加如下内容:
这里写图片描述

eno16777736 :网卡名字 static:表示静态
adress: IP地址
netmask :子网掩码
gateway :网关

这里写图片描述

当配置文件完成之后,还需要进行DNS解析的文件配置:
vim /etc/resolv.conf
打开之后增加DNS地址信息:
nameserver 114.114.114.114
重新启动网卡
/etc/init.d/networking restart
如果你配置的是新的静态IP地址,那么你的SSH需要重新进行连接

强烈建议:如果不是必须,如果你的linux不是作为公共服务器连接,不要去配置静态IP
个人使用Linux 建议大家虚拟机网络中使用NAT模式
这里写图片描述

但是在局域网内,如果你要是多台主机连接一台linux服务器,则设置 桥接模式,个人不需要用桥接模式。

- *搭建Nexus私服

在一个我们的项目的团队之中,一定会有多台主机需要通过Maven取得相关的开发包,那么这个时候如果所有的主机都通过Maven的服务器进行开发包的下载,基本上每台电脑上缓存(1G-2G),那么这个时候网络根本就受不了,而且这些包都是重复下载的,没有任何意义,正因为如此,在团队的项目开发之中,会使用Nexus工具搭建一个私服,所有的开发者通过这个私服进行下载,如果现在需要的一个开发包在私服上不存在,那么就会自动通过一个Maven的中央仓库进行下载,并且将这个开发包保存在Nexus服务器上,这样当其他人需要此开发包的时候就不再需要通过网络下载开发包,而是直接使用Nexus服务器上的开发包即可。

Nexus基本结构:
这里写图片描述

这个工具是免费的(Nexus),可以直接通过“http://www.sonatype.com/download-oss-sonatype”网站上下载:
OOS免费开源版本:
这里写图片描述
本次使用的是“nexus-2.14.4-03-bundle.tar.gz”开发版本,这个版本就是一个war文件,上传到linux下即可(不一定要在Linux下配置),各个平台都可以配置,
因为这个地方需要下载包,而且下载包默认都是在C盘,系统受不了。
建议最好有单独的服务器运行私服Nexus
前提:你的Linux系统里面已经配置好了JDK以及JAVA_HOME

1.将nexus开发包进行上传;
2.随后将文件解压缩到“/usr/local/mynexus”目录之中
先建立“/usr/local/mynexus”文件夹:
mkdir /usr/local/mynexus
将上传的压缩文件进行解压缩控制:
tar xzvf /srv/ftp/nexus-2.14.4-03-bundle.tar.gz -C /usr/local/mynexus
cd /usr/local/mynexus

解压缩后可以发现会有两个子文件夹出现,主要使用的是nexus-2.14.4-03,另外一个是“sonatype-work”保存的是所有的配置文件的信息。

3.进入到/usr/local/mynexus/nexus-2.14.4-03目录下
cd /usr/local/mynexus/nexus-2.14.4-03
而后准备启动nexus的项目

nexus自动集成了jetty工具包,这个就属于小型的webContainer
,它可以自动启动一个web服务
进入到bin目录下
cd /usr/local/mynexus/nexus-2.14.4-03/bin
编辑“nexus”文件
vim /usr/local/mynexus/nexus-2.14.4-03/bin/nexus
里边有个RUN_AS_USER,修改为root

这里写图片描述

需要修改运行的用户(没用):RUN_AS_USER = root

启动nexus服务:bin目录下执行
cd /usr/local/mynexus/nexus-2.14.4-03/bin
./nexus start

4.现在相当与内部启动了一个小型的WEB服务器,那么这个服务器可以直接通过IP地址找到
连接地址:http://IP地址:8081/nexus/
就可以进入到控制台:不要随意修改
这里写图片描述

这里写图片描述

5.完成之后进行登陆,用户名为admin,密码为admin123

这里写图片描述

登陆成功:
这里写图片描述

Public Repositories
最关注的是Central

6.将所有的proxy中的下载配置打开

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

选择repair index,否则可能导致无法下载:
这里写图片描述

以后的仓库地址:http://192.168.28.253:8081/nexus/context/groups/public/
这里写图片描述

7.虽然这个时候配置好了maven私服,但是这个私服要想使用还需要在配置文件里面进行引用:

第一种模式,修改每一个项目的pom.xml文件:

    <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://192.168.28.253:8081/nexus/context/groups/public/</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://192.168.28.253:8081/nexus/context/groups/public/</url>
    </pluginRepository>
  </pluginRepositories>

表示所有的下载都通过私服下载,如果私服没有,则通过网络下载

这个配置只针对一个配置文件有效,多个项目的时候采用第二种模式

第二种模式:在settings.xml文件中配置一个公共的私服下载:
先配置连接服务器:

<servers>
    <server>
        <id>nexus-releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server> 
        <id>nexus-snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
</servers>

配置连接镜像:

    <mirror>
        <id>nexus-releases</id>
        <mirrorOf>*</mirrorOf>

  <url>http://192.168.28.253:8081/nexus/context/groups/public/</url>
    </mirror>
    <mirror>
        <id>nexus-snapshots</id>
        <mirrorOf>*</mirrorOf>

  <url>http://192.168.28.253:8081/nexus/context/groups/public/public-snapshots</url>
    </mirror>

设置核心配置文件:

<profiles> 
<profile>
      <id>env-dev</id>
      <repositories>
        <repository>
            <id>Public</id>
            <name>Public Repositories</name>
            <url>http://192.168.28.253:8081/nexus/content/groups/public/</url>
            <layout>default</layout>
            <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>
    </profile>
 <profiles> 

启动配置文件:

<activeProfiles>  
<activeProfile>env-dev</activeProfile>  
    </activeProfiles> 

这样就表示所有的开发包将通过私服nexus进行下载:

按照之前的javawork项目,在pom.xml新增开发包:servlet包、
jstl包等
这里写图片描述

证明通过私服(在linux远程服务器上)去网络下载,再次下载时只需要通过私服下载,无须通过网络。

查看私服服务器上是否有对应jar包
这里写图片描述

此处是有内容的,表示私服已经开始工作。
二次下载速度得到很大的提升。

Maven和私服Nexus一定是联系紧密的。

一个团队里面一定要有一个专门的nexus私服存在,为所有的开发者提供方便。而且私服还是去标准的中央仓库进行下载,也许速度慢,但是由于就下载一次,所以无所谓。

  • Eclipse+Maven

私服仓库:http://192.168.28.253:8081/nexus/content/groups/public/

在开发之中对于开发包的管理一直是一件头疼的事情,而我们最初的时候可以使用Eclipse进行开发包的管理的管理操作,并且基本上eclipse都能够保证开发包的正确(很多时候错误的话也让人很头疼)。于是有了Maven之后,现在就可以抛开这种智能化的开发工具,直接使用原生的Eclipse J2EE版工具进行开发。
同时项目之中存在nexus私服,这样也有利于整个项目团队的开发包的管理。

1.如果要想在eclipse之中使用Maven,必须保证已经准备好了Maven相关的开发包,同时已经配置好了settings.xml文件,这个文件里面定义有私服的链接地址。
eclipse首选项 —Maven
这里写图片描述
添加新的Maven配置,安装自己的maven开发工具包,表示已经可以使用。
2.而后还需要将之前开发里面配置的settings.xml文件的路径设置到eclipse之中。
User-Settings
这里写图片描述

3.建立一个maven项目,但是要求是基于webapps结构定义的
速度会比较慢,整个项目的建立可能无法一次性成功,如果不行就多建立几次,重新启动eclipse。

这里写图片描述
此时组织名称为cn.mldn,而项目名称为crm,所以最终的包名称就是cn.mldn.crm。
如果此时发现无法创建的话,有可能是你的网络问题,也有可能是你的环境问题,总之,Maven的处理操作有很多不确定性。

4.但是需要注意的是,此时的Maven的项目默认是基于jdk1.5(j2SE5.0)的,需要将其变更为jdk1.7的环境。

这里写图片描述

更改完成之后:
这里写图片描述

报错,原因可能是没有servlet包,所以需要在本项目的pom.xml中添加servlet包,即可
这里写图片描述

随后更改完级别之后

5.除了更改整个项目的JDK使用库之外,还需要将编译的级别变变更为 jdk1.7。
除此之外:Facets Project也需要调整为JDK1.7

这里写图片描述

6.还需要修改整个项目之中的整体配置项:
先更新java的版本为1.7
随后取消动态的web配置,先应用,先将其修改为3.1,再应用,在将其选中;

7.随后还要求随意建立一个web项目,目的是拷贝一些文件出来,
(WEB-INF下的web.xml)
将web.xml文件拷贝到新项目之中

8.此时配置完成,随后就可以将其发布到tomcat之中进行使用了。
新建index.jsp
启动tomcat并可以访问得到

总结:
这种配置的处理操作有一些复杂,特别是已经习惯于使用MyEclipse的开发人员,但是这个在很多的开发之中都会使用。
所以Eclipse+Maven这样的开发必须掌握熟练。

包含私服Nexus的使用过程。

猜你喜欢

转载自blog.csdn.net/qq_19704045/article/details/80952290