此时最终会形成一个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 = 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服务器,则设置 桥接模式,个人不需要用桥接模式。
在一个我们的项目的团队之中,一定会有多台主机需要通过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的使用过程。
