不知不觉毕业四年了,毕业到现在呆过两家公司,用的都是比较老的技术,基本就是ssh(而且还是比较老版本的ssh),自己也是属于比较懒散的程序员,公司用什么就学什么,没有自己去学习一些比较时髦的技术,虽然说是工作了四年,但感觉自己的技术水平还停留在中低下水平,在这个it技术更新迭代如此之快的年代,一直这样下去恐怕以后难有立足之地。为了不至于被后浪拍得连骨头都找不着,于是下决心开始自学一些新技术。
首先学习的是maven,maven应该算是现在java领域最流行的项目管理工具(gradle的势头貌似也挺猛,后面也得抽空学习一下),关于maven的更多信息,各位看官自行百度吧,因为我也是刚学,对maven的了解还有限,我在学习过程中主要还是将他用于管理项目对第三方jar包的依赖。
在这里先推荐一个maven视频教程孔浩老师的maven视频教程,讲得挺详细的,要学习maven的人可以看看。
在使用之前,请确保系统已经安装了jdk
一、maven的安装配置
进入maven官网下载maven的最新安装包,下载后的是一个压缩包,下载完成后解压到系统任意目录(我的解压目录为:D:\maven\apache-maven-3.3.3),maven解压后的情况如图:
解压完成后配置环境变量:
新建一个系统变量:变量名为M2_HOME;变量值为D:\maven\apache-maven-3.3.3
然后在Path最后面加上;%M2_HOME%\bin,至此整个mavan就算安装完成,打下cmd命令窗口,输入mvn -version显示出如下所示信息,表示maven安装成功.
以前在做项目时,如果项目中需要用到第三方jar包,需要自己到官网去下载此jar包和该jar包依赖的其他jar包,然后放到项目lib目录中,但使用maven以后,几需要几行简单的配置,maven就会自动到maven中央仓库https://repo1.maven.org/maven2/下载相应的jar包,及其依赖包,比例项目中需要用到hibernate核心包,只需要在maven项目配置文件pom.xml(关于pom.xml的详细信息网上已经有很多大神写得很清楚了,在此我就不画蛇添足,我这里也从网上找了一篇写得比较详细的关于pom.xm介绍的连接http://blog.csdn.net/longeremmy/article/details/9670619)中添加如下配置:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.10.Final</version>
</dependency>
在maven中一个构件可以通过maven坐标(即groupId、artifactId、version)来确定,在此例中maven会自动给我们下载版本号为4.3.0.Final的hibernate-core.jar包及此jar包依赖的其他第三方jar包,此处需要说明的是maven会自动将下载的jar包放到C盘当前用户目录下.m2/repository子目录里(称之为本地仓库),随着项目以后用到的第三方jar包越来越多,本地仓库里的东西也会变得越来越多,占用了C盘空间,为避免此情况,可以修改maven安装目录下conf/settings.xml文件,找到大约53行的<localRepository>/path/to/local/repo</localRepository>将其复制出来放到注释外面,修改本地仓库位置到其他盘(我修改的本地仓库位置为D:\maven\m2\repository),如图:
这样项目中再有需要依赖第三方jar包中,maven便会将依赖的jar包下载到D:\maven\m2\repository这个目录里。根据孔浩老师的视频教程此处还需要将settions.xml复制一份放到D:\maven\m2目录中。
二,使用maven构建项目
打开cmd 命令窗口,随便进入一个目录,如:D:\maven\demo输入命令:mvn archetype:generate -DgroupId=com.chenqa.maven -DartifactId=ch01 -DarchetypeArtifactId=maven-archetype-quickstart,此处maven需要下载一些基础构件,因为maven中央仓库在国外,国内访问会有一些卡,需要等待一会,如果出现长时间等待,可以按ctrn+c,结束当前命令,然后修改maven安装目录下的conf/settings.xml文件(注意是maven安装目录下的,不是本地仓库目录下的settings.xml),找到mirrors配置项,在里面增加一个国内的镜像配置:
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/maven2/</url>
</mirror>
然后重新输入命令,如果还不行,再在网上找一个镜像地址,再重试;遇到需要输入的地方,直接回车,至出现:
表示创建成功。创建后的项目目录结构为:
D:/maven/demo
- src
- main/java/com/chenqa/maven/App.java
- test/java/com/chenqa/maven/AppTest.java
pom.xml
src/main/java下为项目的主代码目录,src/test/java为测试代码目录,pom.xml为项目的maven配置文件。查看代码会发现maven自动生成了一个非常简单的hello world例子。
此时执行mvn test命令,maven会执行测试代码。
执行mvn package命令,maven会自动执行打包命令,在target子目录里生成一个cho1-1.0-SNAPSHOT.jar文件
执行mvn clean命令,会删除target目录。
编辑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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chenqa.maven</groupId>
<artifactId>cho1</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>cho1</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>com.chenqa.maven.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
然后再执行mvn clean package,在target目录会多出一个cho1-1.0-SNAPSHOT-jar-with-dependencies.jar文件,此文件为可以直接执行的jar文件:
进入target目录,执行java -jar cho1-1.0-SNAPSHOT-jar-with-dependencies.jar命令,系统输出了Hello World信息!