教程

依赖管理

IDE设置121

IntelliJ,Edit Configurations中添加maven,选中 Resolve Workspace artifacts能自动编译依赖模块

内置命令

  • mvn install 将打好包的文件更新到本地库中 -X 强制重新更新
  • mvn clean 清理生成的文件
  • mvn compile 编译项目
  • mvn test 运行测试
  • mvn site 生成文档
  • mvn validate 验证项目正确性
  • mvn dependency:tree 显示依赖树
  • mvn dependency:list 查看当前项目已解析依赖
  • mvn help:effective-pom 显示当前模块有效pom
  • mvn install -pl test 在test模块执行instal命令

参数

-P profile-name 使用某个profile构建

替换默认中行仓库

maven安装目录 conf/setting.xml,或者修改用户配置~/.m2/setting.xml

mirrors加入

<mirror>
    <id> maven-net-cn</id>
    <name> Maven China Mirror</name>
    <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

mirrorOf,表示只为central仓库做镜像,如果想为所有的仓库做镜像那么可以改为:

<mirrorOf>*</mirrorOf>

elcipse中需要在maven设置中指定配置

依赖

依赖范围

  • compile 编译范围,对编译,测试,运行三种classpath都有效
  • test 只在测试范围classpath有效
  • provided 在编译,测试范围有效,运行时无效
  • runtime 运行时依赖范围,对于测试和运行有效,编译无效,典型例子JDBC驱动实现
  • system 和provided依赖范围一致,但需要通过systemPath制定依赖文件路径

传递性依赖

假设A依赖B,B依赖C,B对A为第一直接依赖,C对B为第二直接依赖,C对A为传递性依赖
传递性依赖在第一直接依赖为compile时,和第二直接依赖一样,其他情况都和第一直接依赖一样
见下表,竖列是第一直接依赖范围,横列为第二直接依赖

依赖调解

  • maven依赖调解第一原则:最短路径优先
  • maven依赖调解第二原则:路径一样长的情况,第一声明者优先

如果有这样的依赖关系A -> B -> C -> X(1.0) A -> D -> X(2.0),2.0的会被使用
如果路径一样长,第一声明的优先使用

可选依赖

optional属性,含有optional的组件,被依赖时,optional的组件不会被传递,比如组件支持多个jdbc数据源,但使用时只用一个
一般情况不应该使用可选依赖,应该新建多个artifact,实现不同数据源的支持

依赖编译

-am --also-make 同时构建所列模块的依赖模块
-amd -also-make-dependents 同时构建依赖于所列模块的模块
-pl --projects <args> 构建指定的模块,模块间用逗号分隔
-rf -resume-from <args> 从是指定的模块恢复反应堆
 
 
mvn install -pl mealkey-web -am 编译mealkey-web 模块和依赖模块
posted @ 2016-04-17 16:08 Bug山Bug海 阅读(311) 评论(0) 推荐(0) 编辑
摘要: CORS 参考 http://enable-cors.org/index.html https://help.aliyun.com/document_detail/oss/practice/cors_guide.html 同源策略 跨域访问,或者说JavaScript的跨域访问问题,是浏览器出于安全 阅读全文
posted @ 2016-03-05 21:06 Bug山Bug海 阅读(2297) 评论(0) 推荐(0) 编辑
摘要: Web.config配置 ... 阅读全文
posted @ 2014-04-30 16:31 Bug山Bug海 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 1.在客户端电脑建一个账户,账户名和密码和调试端的账户密码一样2.在客户端电脑进入 管理工具-本地安全策略-本地策略-安全选项网络访问:本地账户的共享和安全模式”,改为“经典-本地用户以自己的身份验证”3.把VS安装带的Remote Debugger 目录复制到客户端开启,在 工具->选项 服务器名 复制4.打开VS对应的项目,调试->附加 在限定符中 粘贴 4中复制的服务器名,附加即可防火墙可能或拦截,需要打开对应端口VS2012的功能得到了增强,可以无身份验证调试.NET程序,但是客户端要求WIN7以上,XP不行 阅读全文
posted @ 2013-07-31 19:05 Bug山Bug海 阅读(1154) 评论(0) 推荐(0) 编辑
摘要: 乱码产生的原因是Python在读取时默认解码方式是用操作系统编码,如果和保存时的编码方式不一样,就会出现乱码比如以下片段,文件保存格式是utf-8#coding=utf-8print '是' #输出乱码因为windows默认的编码方式是GBK,python文件保存时使用了utf-8,在读取时,python使用GBK的编码表去解utf-8编码的字节码,因为GBK与UTF-8编码不兼容,自然出现了乱码问题解决方法:1.直接使用 u'是' 形式,指明以unicode编码,解码方式会以顶部 #coding定义的编码方式,如果不写,以操作系统当前编码方法,建议写上#cod 阅读全文
posted @ 2013-04-06 20:13 Bug山Bug海 阅读(18146) 评论(0) 推荐(0) 编辑
摘要: Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。比如上面那串字符,其实是一张小图片,将这些字符复制黏贴到火狐的地址栏中并转到,就能看到它了,一张1X36的白灰png图片。 在上面的Data URI中,data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据。 目前,Data URI scheme支持的类型有:data:,文本数据data:text/plain,文本数据data:text/html,HTML代码... 阅读全文
posted @ 2013-04-01 20:51 Bug山Bug海 阅读(1896) 评论(0) 推荐(0) 编辑
摘要: 对象创建:当一个函数对象被创建时候,Function构造器产生的函数对象会运行类似这样的代码:this.prototype={constructor:this};假设函数FF用new方式构造对象时,对象的constructor被设置成这个F.prototype.constructor如果函数在创建对象前修改了函数的prototype,会影响创建出来对象的construtor属性如:function F(){};F.prototype={constructor:'1111'};var o=new F();//o.constructor===‘1111’ true继承原理:Java 阅读全文
posted @ 2013-02-28 10:11 Bug山Bug海 阅读(1616) 评论(0) 推荐(1) 编辑
摘要: 用于讲一种stdin转换成另一种格式输出tr set1 set2 #将set1中内容替换成set2集合中对应字符set2比set1短,会自动扩张和set1一样,用最后一个元素填充set1短,会忽略set2多出的元素-d 删除指定集合元素,只有set1参数echo "Hello 123 world 456" | tr -d '0-9' #Hello world-c 补集(Complementing),影响set1d的解释,-c后会使用不包含set1中的元素映射echo "123abc123" | tr -c '0-9\n' 阅读全文
posted @ 2013-01-08 21:51 Bug山Bug海 阅读(809) 评论(0) 推荐(0) 编辑
摘要: 无开关参数:多行并一行 cat example.txt # Example file 1 2 3 4 5 6 7 8 9 10 11 12 cat example.txt | xargs 1 2 3 4 5 6 7 8 9 10 11 12-n num:一行变多行,num是每行的个数 cat example.txt | xargs -n 3 1 2 3 4 5 6 7 8 9 10 11 12-d:使用自定义界定符(delimiter)分割 echo "splitXsplitXsplitXsplit" | xargs -d X split split split split 阅读全文
posted @ 2013-01-08 21:48 Bug山Bug海 阅读(839) 评论(0) 推荐(0) 编辑
摘要: 特殊的变量替换${var}:同$var${var:-value} var未设置或值为null,使用value值作为替换,否则使用var${var:=value} 与${var:-value}一样,只是使用value的同时会赋值给varunset var1 echo ${var1:="var1 nuset or null one "}echo ${var1:="var1 nuset or null two"} #输出one,因为var1已不为null,使用var1echo ${var2:-"var2 nuset or null one " 阅读全文
posted @ 2013-01-02 00:30 Bug山Bug海 阅读(209) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示