简单说说maven,比如maven的常用命令,毕竟这是上次面试没回答上的问题(尴尬)。
mvn compile:,用于编译源代码,也可以调用 mvn clean compile,表示先运行清理之后运行编译,会将代码编译到target文件夹中。
调用mvn compile后在target下生成了一个文件夹:
只是生成的这俩lst文件,不清楚拿来做什么的。
调用mvn clean后,又清空了target文件夹下的内容。
mvn package用于打包,生成的jar包也在target目录下,但是调用没有生成,mvn clean package后成功:
maven install:在本地repository中安装jar包,
运行成功,提示在mavenResp下生成了相应jar包,
由于没有写单元测试,mvn test就没用。(JUnit单元测试是下一个要讨论的问题)。
mvn dependency:sources
下载相应jar包的源码,也可以在eclipse中,window->preference->maven->勾选download artifact sources,以及java doc
或者在pom.xml中,增加:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration>
</plugin>
ps: 后两个方法没有实践过。
mvn compile与mvn install、mvn deploy的区别
- mvn compile,编译类文件
- mvn install,包含mvn compile,mvn package,然后上传到本地仓库
- mvn deploy,包含mvn install,然后,上传到私服
显示版本信息 :
mvn -version/-v
创建mvn项目:
mvn archetype:create -DgroupId=com.oreilly -DartifactId=my-app
PS:
一般使用情况是这样,首先通过cvs或svn下载代码到本机,然后执行mvn eclipse:eclipse生成ecllipse项目文件,然后导入到eclipse就行了;修改代码后执行mvn compile或mvn test检验,也可以下载eclipse的maven插件。
说完了maven的常用命令,再倒过来说说maven的安装,下载一个maven的zip包,解压到:
在环境变量里设置maven的路径如上,mvn命令生效表示安装上。
打开E:apache-maven-3.5.2conf下的setting.xml文件,修改如下两个配置:
localRepository表示本地仓库路径,怎么理解maven的仓库呢,我认为,就是传统的J2EE项目,jar包都是在随着工程一期的,在build path里配置,
同时保存在web_inf/lib下,需要引入什么jar包,得自己去下载然后倒入,但是maven把这些jar包给统一管理起来,服务端存着几乎所有的jar包,本地
需要的话,就在pom.xml中配置依赖,maven自动帮你下载到本地仓库中,然后所有项目共享jar包,不只是共享maven上下下来的jar包,也可以把自己
的工程编译成jar供其他应用调用,至于这个公共的服务端默认是外国的,mirror配置成了阿里云的镜像。如下是一个pom.xml的实例:
在说一下artifactId和groupId的命名,
前者就是(算了,百度下):
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
还有就是:
比如我们需要用到一个jar包,比如spring的,但是又不知道他的artifactId和groupId,怎么办呢?
找个网站就好了。http://mvnrepository.com/
以下摘抄自:
https://blog.csdn.net/bloomzy/article/details/26002259
5个必须掌握的maven命令
1. mvn help:describe 你是否因为记不清某个插件有哪些goal而痛苦过,你是否因为想不起某个goal有哪些参数而苦恼,那就试试这个命令吧,它会告诉你一切的. 参数: 1. -Dplugin=pluginName 2. -Dgoal(或-Dmojo)=goalName:与-Dplugin一起使用,它会列出某个插件的goal信息,如果嫌不够详细,同样可以加-Ddetail.(注:一个插件goal也被认为是一个 “Mojo”) 下面大家就运行mvn help:describe -Dplugin=help -Dmojo=describe感受一下吧!
2. mvn archetype:generate 你是怎么创建你的maven项目的?是不是像这样:mvn archetype:create -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.ryanote -Dartifact=common,如果你还再用的话,那你就out了,现代人都用mvn archetype:generate了,它将创建项目这件枯燥的事更加人性化,你再也不需要记那么多的archetypeArtifactId,你只需输入archetype:generate,剩下的就是做”选择题”了.
3. mvn tomcat:run 用了maven后,你再也不需要用eclipse里的tomcat来运行web项目(实际工作中经常会发现用它会出现不同步更新的情况),只需在对应目录(如/ryanote)里运行 mvn tomat:run命令,然后就可在浏览器里运行http://localhost:8080/ryanote查看了.如果你想要更多的定制,可以在pom.xml文件里加下面配置: 01 02 03 04 org.codehaus.mojo 05 tomcat-maven-plugin 06 07 /web 08 9090 09 10 11 12 当然你也可以在命令里加参数来实现特定的功能,下面几个比较常用: 1. 跳过测试:-Dmaven.test.skip(=true) 2. 指定端口:-Dmaven.tomcat.port=9090 3. 忽略测试失败:-Dmaven.test.failure.ignore=true 当然,如果你的其它关联项目有过更新的话,一定要在项目根目录下运行mvn clean install来执行更新,再运行mvn tomcat:run使改动生效.
4. mvnDebug tomcat:run 这条命令主要用来远程测试,它会监听远程测试用的8000端口,在eclipse里打开远程测试后,它就会跑起来了,设断点,调试,一切都是这么简单.上面提到的那几个参数在这里同样适用.
5. mvn dependency:sources 故名思义,有了它,你就不用到处找源码了,运行一下,你项目里所依赖的jar包的源码就都有了
--------2018.06.20更新--------
项目中新引入了一个jar包,而这个jar包在maven远程仓库里没有,于是我们在我们的工程里面新建一个mavenlib目录,将这个jar包拷进去,然后新建一个bat文件,内容如下:
:: set project_path=%~dp0 call mvn install:install-file -Dfile=%project_path%/mavenlib/ojdbc-7.jar -DgroupId=com.oracle -DartifactId=ojdbc -Dversion=7 -Dpackaging=jar call mvn install:install-file -Dfile=%project_path%/mavenlib/jasperreports-6.1.2.jar -DgroupId=net.sf.jasperreports -DartifactId=jasperreports -Dversion=6.1.2 -Dpackaging=jar call mvn install:install-file -Dfile=%project_path%/mavenlib/jasperreports-fonts-cupid-extension-4.0.2.jar -DgroupId=com.venustech -DartifactId=jasperreports-fonts-cupid-extension -Dversion=4.0.2 -Dpackaging=jar call mvn install:install-file -Dfile=%project_path%/mavenlib/jradius-core-ca-1.1.5.jar -DgroupId=net.jradius -DartifactId=jradius-core-ca -Dversion=1.1.5 -Dpackaging=jar pause
即可将本地的jar包install到maven工程里去。
此时仍然报错,选中项目,右键maven-->update project。(不明其意),即可。