Maven
1、到官网下载maven,但不知道这些文件有什么区别,应该下哪个?
binary 指的是编译后的二进制文件。是可以直接使用的,你应该下载这个。(apache-maven-3.2.3-bin.zip)
source.zip是maven的源码包。
tar.gz 是一种压缩文件,在Linux和OSX(苹果系统)下的
2、MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。
MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。
3、
4、groupId包的路径,artifactId工程名字
进入pom文件所在路径,mvn compile;生成target目录class文件
Src/mian/java
Src/test/java
5、mvn test 执行test测试类,在target目录下生成test.class文件
6、mvn clean 去除target目录
7、mvn package在target编译测试并目录下生成.jar文件
8、mvn install等同于(mvn compile,mvn package,mvn test),并把jar包发布到本地的仓库
9、仓库所在的jar包E:\apache-maven-3.3.1\lib\maven-model-builder-3.3.1.jar
http://mvnrepository.com/
10、mvn archetype:generate或者mvn archetype:generate -DgroupId=com.sitech -DartifactId=test -Dversion=0.0.1-SNAPSHOT
11、文件中重命名 Alt+Shift+R
Ctrl+d删除之前内容
12、-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
Jdk1.8和maven3.3.1版本冲突造成
Maven 隐式变量
· ${basedir} 项目根目录
· ${project.build.directory} 构建目录,缺省为target
· ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
· ${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
· ${project.packaging} 打包类型,缺省为jar
· ${project.xxx} 当前pom文件的任意节点的内容
EasyMock 使用方法与原理剖析
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。
13、<scope>compile</scope>编译,测试,打包(打包)的时候将依赖加入,默认范围
provided编译和测试会将依赖加进去。Servlet-api tomact中包括,打包会冲突
runtime在运行时依赖,如mysql-connect
test 测试时加依赖
14、maven——disable maven nature清除maven支持,再转换maven 工程 configure——convert maven project
15、依赖的传递性(只传递compile范围的包,dbunit依赖junit3.8)
16、Maven依赖的问题
1)A项目依赖L1.0包,B项目依赖L1.1包,C项目依赖A,B,则C依赖A中的jar包,按声明顺序
2)间接依赖按级别短的依赖
3)排除依赖
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>user-core</artifactId>
<version>${project.version}</version>
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
</dependency>
17、聚合
<modules>
<module>../core</module>
<module>../user</module>
<module>../usercore</module>
</modules>
18、继承
<parent>
<groupId>com.wanglu</groupId>
<artifactId>user-extend</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../user-extend/pom.xml</relativePath>
</parent>
其中值得注意的是<packaging>pom</packaging>这个父项目不像之前的项目那样创建16、一个JAR 或者一个WAR,它仅仅是一个引用其它Maven 项目的POM
19、Maven 仓库管理软件来搭建私服,nexus sonatype 2.5最后一个支持jdk1.6的版本
Path环境变量
E:\nexus-2.5.1-01-bundle\nexus-2.5.1-01\bin\jsw\conf\wrapper.conf更改java路径
各种报错,jdk1.7完成
参考文档http://www.oschina.net/question/698806_159372
Hosted respository :本地提交给mvn:deploy -----release,3rd party(可以自己上传第三方jar包),snapshot
中央工厂下载到私服的central proxy工厂
Pom.xml中设置工厂
<repositories>
<repository>
<id>nexus</id>
<name>Nexus repository</name>
<url>http://localhost:8081/nexus/index.html#view-repositories;public~configuration</url>
//public repository包含私服上的前几个工厂,可以增加工厂
</repository>
</repositories>
也可以在maven的conf的setting.xml中设置,如果私服没有则去中央工厂找,如果私服没有,不让去中央工厂找需设置镜像
<mirror>
<id>nexusMirror</id>
<mirrorOf>repositoryId</mirrorOf>工厂id
<name>Human Readable Name for this Mirror.</name>
<url>设置私服路径</url>
</mirror>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://www.myhost.com/maven/jdk14</url>
<release>
<enable>true</enable>
</relsease>
<snapshots>
<enable>true</enable>
</snapshots>
</repository>
</repositories>
</profile>
<、profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
配置nexus发布私服的用户
Nexus----security--users
在conf的setting.xml中配置
<server>
<id>deploymentRepo</id>工厂id
<username>repouser</username>用户名如deplement
<password>repopwd</password>deplement123
</server>
给插件绑定目标,在compile之后执行
Maven插件官网搜索各种打包的配置
配置插件引入的依赖只在插件中起作用
Maven 测试 由surefire插件控制,默认执行类名为Test**,**Test,**TestCase的类
Package -DskipTests=true跳过测试
发布web项目,package war copy tomcat手动
Copy插件,自动copy
Clean package Jetty:run
20、idea用jetty启动实现debug:http://blog.youkuaiyun.com/xlgen157387/article/details/47616841
21、http://www.cnblogs.com/holbrook/archive/2012/12/24/2830519.html#sec-1
22、
<build> <finalName>fms-worker</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <filters> <filter>src/main/resources/filter/${evn}_config.properties</filter> <filter>src/main/resources/filter/${evn}_jdbc.properties</filter> <filter>src/main/resources/filter/${evn}_mq.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
23、
3、插件绑定
Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标相互绑定,以完成某个具体的构建任务。例如项目编译这一任务,它对应了default生命周期的compile这一阶段,而maven-compiler-plugin这一插件的compile目标能够完成该任务。因此将它们绑定,就能实现项目编译的目的。
内置绑定
为了让用户不用做任何配置就能构建Maven项目,Maven在核心为一些主要的生命周期阶段绑定了很多插件的目标,当用户通过命令行调用声明周期阶段时,对应的插件目标就会执行相应的任务。生命周期阶段与插件目标对应表如下:
表一:clean生命周期阶段与插件目标的绑定关系
24、maven插件对应目标
http://maven.apache.org/plugins/index.html