Maven 一般用户配置
来源:互联网 发布:nga 删淘宝 编辑:程序博客网 时间:2024/06/10 07:38
1.坐标
2.依赖
2.1依赖定义3.仓库
2.2依赖传递
2.3依赖调解
2.4依赖优化
3.1本地仓库
3.2配置远程仓库
3.3远程仓库的认证
3.4部署到远程仓库
3.5镜像
一、坐标
1. groupId : 定义当前的实际项目,不应该对应组织或公司。
2.artifactId : 定义项目的一个模块,推荐做法是使用实际项目名称为前缀。如nexus-core,nexus为实际项目,core为模块
3.version: 版本
4.packaging : 定义打包方式,默认为jar
<groupId>com.battlesky.qqphoto</groupId> <artifactId>qqphoto-transprotocol</artifactId> <version>0.0.1-SNAPSHOT</version>
二、依赖:
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <type>jar</type> <scope>test</scope> </dependency> </dependencies>
1. 依赖定义(参考上面的demo)
1) 组件坐标(groupId,artifactId,version)
2) type : 依赖的类型,对应坐标中的packaging, 一般不用声明,默认为jar
3) scope:依赖范围 , Maven 项目在编译、测试、运行 分别用不同的classpath。依赖范围就是制定依赖的组件在哪个classpath 起作用。a) complie: 对3种classpath都有效。
b) test : 只对测试的calsspath有效
c) provided: 对编译 和 测试 的classpath有效. 如servlet-api。运行时容器已提供,故只需对编译和测试有效。
d) runtime: 对运行和测试有效。 如 JDBC驱动
e) system:对编译 和 测试的classpath有效,同 provided 。由于和本机系统绑定,不可移植, 一般不推荐使用4) optional: 是否可选依赖。项目中用到2个相互排斥的依赖时用到,对依赖传递有影响。
5) exclusions: 用来排除传递性依赖,例如 A 依赖于B , B依赖于C的一般不稳定版本,则可以排除这个C,然后重定义对C稳定版本的依赖。
<dependencies> <dependency> .... <exclusions> <exclusion> <groupId>...</groupId> <artifactId>...</artifactId> </exclusion> </exclusions> </dependency></dependencies>
2.依赖传递
:主要针对依赖范围。
A 依赖于B , B依赖于C , 则 A 对C的依赖范围为传递性依赖。这个有个表,一般不必太关心
可选依赖不被传递。
3.依赖调解
问题: 如 A -> B->C(1.0), A->D->C(2.0) ,那A依赖于C 1.0 or 2.0 ?
原则 : 1) 短路径优先:谁依赖路劲短用谁 2) 当依赖路径长度一样,则第一声明优先:谁先声明用谁。( 这个纯粹是规定,没什么逻辑可言)
4. 依赖优化
1) 属性预定义: 相对于C里面的 #define。 对于多个依赖有相同的属性(比如版本),则可以:
<project>...<properties> <springframework.version>2.5.6</springframework.version></properties><dependencies> <dependency> <groupId>A</groupId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>B</groupId> <version>${springframework.version}</version> </dependency> <dependency> <groupId>C</groupId> <version>${springframework.version}</version> </dependency></dependencies></project>这样有助于统一修改。(说白了 还是和#define作用一样)2 ) 进一步优化,可以通过下面2个命令查看当前项目的依赖关系。
a)mvn dependency:list 列出所有依赖
b)mvn dependency:tree 列出依赖树
可以根据上面的信息进一步手动优化依赖。
三、仓库
仓库分本地仓库和远程仓库,其中最重要的远程仓库为中央仓库即maven的官方仓库。
1.本地仓库
本地仓库一般位于: 用户路径\.m2\repository\ 。可以通过修改用户路径\.m2\settings.xml 文件来改变本地仓库位置
<settings> <localRepository>d:\myRepository</localRepository></settings>
2.配置远程仓库
<project> ... <repositories> <repository> <id>jboss</id> <!----ID------> <name>JBoss Repository</name> <!----名称---- > <url>http://repository.jboss.com/maven2/</url> <!----URL-----> <releases> <enabled>true</enabled> <!----开启发布版本的下载-----> </releases> </repository> <snapshots> <enabled>false</enabled> <!----关闭快照版本的下载-----> <updatePolicy>daily</updatePolicy> <!----可选,检查更新频率-----> <checksumPolicy>ignore</checksumPoliy> <!----可选,检查检验和-----> </snapshots> <layout>default</layout> </repositories> ...</project>
1)updatePolicy : 检查更新的频率,可选值有:
daily : 每天检查一次
never: 从不检查
always: 每次构建都检查
interval:X : 每隔 X 分钟检查一次2)checkssumPolicy : 检查检验和 失败时如何处理, 可选值有:
warn : 输出警告信息
fail : 让构建失败
ignore : 忽略检验失败
3.远程仓库的认证
仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml文件中.
<settings> ... <servers> <server> <id>my-proj</id> <!--id必须与POM文件中的远程仓库id一致 ---> <username>repo-user</username> <!---用户名---> <password>repo-pwd</password> <!---密码---> </server> </servers> ... </settings>
4.部署到远程仓库
需要编辑项目的POM文件。添加distributionManagement元素. 对应快照版本和发布版本分别有不同的配置。
<project> ... <destributionManagement> <repository> <!--发布版本的配置---> <id>proj-releases</id> <name>Proj Release Repository</name> <url>http://192.168.1.100/content/repositories/proj-releases</url> </repository> <snapshotRepository> <!--快照版本的配置--> <id>proj-snapshots</id> <name>Proj Snapshot Repository</name> <url>http://192.168.1.100/content/repositories/proj-snapshots</url> </snapshotRepository> </destributionManagement> ... </project>
3.5镜像
镜像一般用途: 1.设置中央服务器的镜像,以便更快的的获得服务 2. 结合私服,让配置更简单,因为私服可以作为其他所有远程服务器的镜像。
镜像需要配置到setting.xml中
<settings>....<mirrors> <mirror> <!--给定仓库的下载镜像。 --> <id>planetmirror.com</id> <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 --> <name>PlanetMirror Australia</name> <!--镜像名称 --> <url>http://downloads.planetmirror.com/pub/maven2</url> <!--该镜像的URL。构建系统会优先考虑使用该URL,而非使用默认的服务器URL。 --> <mirrorOf>central</mirrorOf> <!--被镜像的服务器的id。例如,如果我们要设置了一个Maven中央仓库(http://repo1.maven.org/maven2)的镜像,就需要将该元素设置成central。这必须和中央仓库的id central完全一致。--> </mirror> </mirrors>..... </settings>其中mirrorOf 还可以如下配置<mirrorOf>*</mirrorOf> 作为所有远程仓库的镜像,一般配置私服<mirrorOf>external:*</mirrorOf> 作为所有非本机的远程仓库的镜像<mirrorOf>repo1,repo2</mirrorOf> 作为repo1和repo2的镜像,可以有任意多个<mirrorOf>*,!repo1</mirrorOf> 作为除repo1之外的其他所有远程仓库的镜像,!表示排除。
- Maven 一般用户配置
- windows打开一般用户
- 一般用户的root操作
- oracle创建一个一般用户
- 配置Maven
- maven配置
- 配置maven
- Maven配置
- Maven配置
- maven 配置
- maven 配置
- maven 配置
- maven 配置
- maven配置
- maven 配置
- maven 配置
- maven 配置
- 配置 maven
- 测试apns provider feedback 遇到的问题
- C#中使用MySQLDriverCS连接调用MySQL
- Spring in action Third
- VC常用小知识
- Go语言_HTTP包
- Maven 一般用户配置
- 古希腊神话故事4 :伊娥
- Ruby 时间日期的用法总结
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 线程池的设计与测试
- iPhone开发中,在XCode下混合编译C++/Objective-C
- 浅谈Oracle学习方法
- C#生成excel-NPOI篇
- Exadata的出厂预设的IP地址