最近需要做maven的配置管理,这里做个记录,有延伸。
1.对本地仓库的配置:
本地仓库不宜放在C盘:原因:
1. 本地仓库大小约为1G,占用内存
2. 万一重装系统,C盘内容消失,build workSpace时间漫长
更改本地仓库方法:
1. 在maven安装包的conf/settings.xml中设置
2. 在eclipse中设置preferrences–maven–user settings–user settings中设置settings.xml路径(如果此时报错:如法读取文件,那么很有可能文件有错误:字母拼写不正确等),最后点击update
settings,就会出现eclipse右下角会出现build workSpace这样字样
2.鉴权配置:
主要用于执行maven命令deploy时的鉴权。找到servers标签并配置
<server>
<id>maven_devid>
<username>adminusername>
<password>admin123password>
server>
具体配置多少个server根据需要而定。
注意:此处id必须和工程pom.xml文件中repository标签的id对应起来。如下
<repositories>
<repository>
<id>group_oneid>
<name>group_maven_reposname>
<url>http://211.140.17.108:8031/nexus/content/groups/group_oneurl>
<releases>
<updatePolicy>neverupdatePolicy>
releases>
<snapshots>
<updatePolicy>neverupdatePolicy>
snapshots>
repository>
repositories>
注:updatePolicy:更新策略
用户名密码:该用户名和密码是Nexus私服密码,默认用户名是admin密码admin123
3.setting.xml的建议:
settings.xml文件中也可以配置仓库信息。但是建议在工程的pom.xml文件中配置,这样可以将作用范围控制在工程级别,灵活。
4..maven本地仓库,私服Nexus和中央仓库:
私服Nexus:是远程仓库的一种,只不过远程仓库的地址是本地服务器而已
访问私服:使用默认账户:admin 密码:admin123
访问顺序:本地仓库(本机)—>私服(局域网)—>中心仓库(外部网络)
中央仓库的配置:在maven安装路径下,在lib目录下,maven-model-builder-3.5.3.jar中,有一个默认的pom.xml文件:
配置了Maven默认连接的中心仓库:特征:central id名为 central
<repositories>
<repository>
<id>centralid>
<name>Central Repositoryname>
<url>https://repo.maven.apache.org/maven2url>
<layout>defaultlayout>
<snapshots>
<enabled>falseenabled>
snapshots>
repository>
repositories>
配置私服的两种方式:
方法一:在工程中配置xml:不许激活,可用maven -update强制更新就可
<project>
...
<repositories>
<repository>
<id>nexusid>
<url>http://localhost:8081/nexus/content/groups/public/url>
<snapshots><enabled>trueenabled>snapshots>
<releases><enabled>trueenabled>releases>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>nexusid>
<url>http://localhost:8081/nexus/content/groups/public/url>
<snapshots><enabled>trueenabled>snapshots>
<releases><enabled>trueenabled>releases>
pluginRepository>
pluginRepositories>
...
<project>
方法二:在全局settings.xml中配置:需激活
<settings>
...
<profiles>
<profile>
<id>profile-nexusid>
<repositories>
<repository>
<id>nexusid>
<url>http://localhost:8081/nexus/content/groups/public/url>
<snapshots><enabled>trueenabled>snapshots>
<releases><enabled>trueenabled>releases>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>nexusid>
<url>http://localhost:8081/nexus/content/groups/public/url>
<snapshots><enabled>trueenabled>snapshots>
<releases><enabled>trueenabled>releases>
pluginRepository>
pluginRepositories>
profile>
profiles>
...
settings>
之后在使用对上面的配置进行激活(通过配置的id标识进行激活)
<activeProfiles>
<activeProfile>profile-nexusactiveProfile>
activeProfiles>
5.maven镜像:
我们可以来看下 setting.xml中对于的解释
mirrors:This is a list of mirrors to be used in downloading artifacts from remote repositories. It works like this: a POM may declare a repository to use in resolving certain artifacts. However, this repository may have problems with heavy traffic at times, so people have mirrored it to several places.That repository definition will have a unique id, so we can create a mirror reference for that repository, to be used as an alternate download site. The mirror site will be the preferred server for that repository.
即为:粗体字显示的:由于网络问题,远程库可能有问题
在settings.xml中设置镜像:
...
maven.net.cn
one of the central mirrors in china
http://maven.net.cn/content/groups/public/
central
...
翻译:的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求,都会转到对应的镜像url中请求对应的资源,用户也可以使用同样的方法配置其他仓库的镜像。另外三个元素id,name,url与一般仓库配置无异,表示该镜像仓库的唯一标识符、名称以及地址。
由于私服可以代理任何外部的公共仓库(包括中央仓库),任何需要的构件都可以从私服获得,私服就是所有仓库的镜像。这时,可以配置这样的一个镜像
...
internal-repository
Internal Repository Manager
http://192.168.1.100/maven2
*
...
为了满足一些复杂的需求,Maven还支持更高级的镜像配置:
1.
匹配所有远程仓库。
2.
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
3.
匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
4.
匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。
注意:由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。
6.maven常用命令
mvn clean清除工程编译出来的字节码文件和resources文件,即删除target目录。
mvn package编译工程并将工程打成jar包,存放在target中
mvn install编译工程,将工程打成jar包并部署到本地仓库,路径为本地仓库/groupId.artifactId.version
mvn deploy编译工程,将工程打成jar包并部署到本地仓库,然后发布到配置好的私服中
mvn test编译工程并跑单元测试
mvn dependency:tree 查看工程的依赖树
Maven命令常用参数
-D 指定参数化的值。比如pom.xml文件中在properties标签下设置了参数
可通过mvn clean package –Dereading.version=1.1来指定ereading.version的值为1.1
-U 强制更新快照版本的jar包
-X 命令行执行maven命令的时候打印debug日志