Maven使用和私服仓库搭建
1. maven的工程、jar的默认存放地址可以到maven安装目录的conf下面,打开setting.xml文件,默认存储在Default: ${user.home}/.m2/repository下面。
2. 修改maven工程、jar的默认存放路径:将<localRepository>/path/to/local/repo</localRepository>标签打开,将需要存放的路径改成真是路径,同时将setting.xml复制到需要存放的目录下面。
3. 在myeclipse中安装maven和配置setting文件
4. Maven的内置隐式变量:${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}${project.packaging} 打包类型,缺省为jar ${project.xxx} 当前pom文件的任意节点的内容
5. Maven的中央工厂实在maven中lib下面的maven-model-bulider.jar下面的pom.xml的文件中配置的。
6. Maven模块的之间的依赖,将需要依赖模块进行clean和install,如果在install中报错,需要查询是不是jdk版本引起的问题。
7. 依赖范围scope的属性:
a) Compile:(默认的依赖范围)在编译和打包的时候打进去。
b) Provided:编译和测试的时候依赖进去,最后在打war包的时候不会打进去。
c) Runtime:编译的时候不依赖,但打包、测试的时候依赖,比如jdbc的jar。
d) Test:只有测试的时候依赖,编译和打包都不需要,比如junit打包的时候就不需要。
8. Maven的聚合操作:如果不进行聚合操作,每一个模块需要独自clean,如有大量模块就会增加工作量,通过聚合就实现一次clean,所有的模块都可实现clean。只需要新建一个简单的maven项目,新建的类型为pom,在pom.xml中添加<modules>../模块名</module>就实现了聚合。
9. Maven的继承操作:可将各个模块中pom.xml中公用的一部分配置(比如公用的jar包,公用的模块)放在一个集成的父模块中,可与聚合的模块为同一个模块。
<parent>
<groupId>SoftManger(工程名称)</groupId>
<artifactId>User-All模块名称</artifactId>
<version>0.0.1-SNAPSHOT版本号</version>
<relativePath>../User-All/pom.xml相对路径</relativePath>
</parent>
如果需要将依赖的jar放在父模块中,需要使用dependencyManagement标签,如图:
但是,但是子类中的依赖标签还是需要继续配置,但是版本号与周期号就可以不用配置,如果不继续配置的话,默认会去加载父类中所有的依赖包。如子类中:只需配置这几个属性,其他属性从父模块中查询。
10. Nexus:maven私服仓库搭建:
a) Sonatype Nexus 进入官网
b) 将nexus的bin加入到环境变量中
c) 设置nexus的bin中jsw中conf中wrapper.conf文件的jdk中java.exe的位置。wrapper.java.command=C:\ProgramFiles\Java\jdk1.8.0_25\bin\java
d) 安装nexus,可以直接通过命令安装或者点击安装,在cmd中输入nexus install命令安装。
e) 启动nexus服务,可通过服务管理或者命令nexus start命令。
f) 启动后执行http://localhost:8081/nexus进入nexus管理页面,用户名:admin 密码:admin123456
g) 修改密码或者添加用户,可进入nexus系统,点击左侧security中users,可进行添加、删除用户,还能进行当前用户密码修改。
11. Nexus中各个工厂存放的不同的jar:
a) Public repositories:将其他工厂加入到这个工厂里,可实现配置一个路径,可从多个工厂获取jar包。
b) 3rd Party:用于上传第三方的jar,比如有些版本的jar在maven中心仓库中没有,需要手动去官网下载好上传到nexus上去。
c) Apache Snapshots:从apache上现在下来的jar包
d) Central:接受从中心工厂上下载的jar包
e) Central M1 shadow :maven1使用的,目前已经不再使用。
f) Releases:用于接受版本号Releases的jar包
g) Snapshots:用于接受版本号Snapshots的jar包
12. Nexus工厂的类型有三种:
a) Hosted:包含3rd party、releases、snapshots工厂,这三个工厂一般面向我们自己的项目,而不会去面向公网。
b) Proxy:包含Apache Snapshots、Central
c) Group:整合其他工厂。
13. 设置nexus工厂:在父工程中的pom.xml中设置
14. 如何在maven的setting.xml中设置nexus工厂:上面的设置太过片面,如果新建的工程不继承父工程,那么就还需要再次配置repositories,所以需要在maven公用的配置文件settings.xml中进行配置。配置方法如下图:
另外还需要设置一个开关:
开关必须跟上面的id匹配,如果jar不往私服上传,请设置user settings。
15. 如何配置maven工厂的镜像:setting.xml中打开mirror标签,如图:
然后将maven-model-bulider.jar下面的pom.xml中央工厂的配置拿出来配置到settings.xml中去,如图:
将中央工厂的url设置成其他的地址,或者不要设置。最后将中央工厂的id打开就行了。如果设置了镜像后,pom文件报错,可能是本地仓库有私服仓库索引中缺少,把本地仓库中的jar包删掉,重新更新maven,同时将私服中所以进行同步。
16. 对开发的模块进行发布步骤:
a) Pom文件中配置工厂,使用distributionManagement标签。
b) 在setting.xml中设置上传权限。使用server标签就行配置,deployment:用户名deployment,密码:deployment123。
17. 将jar包发布到各自项目的工厂:
a) 在nexus中新建一个工厂。
b) 设置工厂的权限。
c) 设置工厂的用户信息。
d) 将pom文件中distributionManagement标签中url设置成新建的工厂。
e) Setting.xml中设置上传权限,用户名和密码为刚刚设置的用户信息。
18. Maven的生命周期,一共有三套生命周期:
a) Clean:
i. pre-clean
ii. clean
iii. post-clean
b) Default:
i. validate
ii. initialize
iii. generate-sources
iv. process-sources:处理项目主资源、一般是将src/main/resources目录的内容进行变量替换工作后、复制到项目输出的主classpath目录中。
v. generate-resources
vi. process-resources
vii. compile编译/java目录下的Java文件至项目输出的主classpath目录中。
viii. process-classes
ix. generate-test-sources
x. process-test-sources
xi. generate-test-resources
xii. process-test-resources
xiii. test-compile:编译测试源码、一般是编译src/java目录下的Java文件。
xiv. process-test-classes
xv. test:运行测试、测试代码不会被打包或部署
xvi. prepare-package
xvii. package
xviii. pre-intergration-test
xix. integration-test
xx. post-intergration-test
xxi. verify
xxii. install:将包安装到Maven本地仓库。
xxiii. deploy:将包复制到远程仓库
c) Site:
i. pre-site
ii. site:生成项目站点文档
iii. post-site
iv. site-deploy:将生成的项目站点发布到服务器上
19. 添加插件,将插件添加到不同的环节中去:
20. Maven的测试:maven默认运行src/test文件的测试类,但是默认只会测试Test**或**Test的文件,所以需要配置包含的测试类和不进行的测试类,或者配置不需要运行测试类(skip)。