maven笔记

maven笔记

Maven 是通过解析POM (project object model)pom.xml 文件来解决包的依赖问题Dependency

下载maven http://mirrors.cnnic.cn/apache/maven/maven-3/   http://maven.apache.org/download.cgi

安装
1. 解压ZIP文件 
2. 配置环境变量M2_HOME为安装路径
3. bin目录添加到path


可选
MAVEN_OPTS:-Xms128 -Xms512m   //因为java虚拟机的默认最大内存不能满足Maven的运行需要,所以推荐最好配置。(没改过)

maven 的配置文件settings.xml

修改该配置文件主要目的是设置仓库目录和下载的镜像站点mirrors

如果存在${user.home}/.m2/settings.xml , 则使用该配置文件作为maven的配置文件
否则使用配置文件:${maven.home}/conf/settings.xml

根据setting.xml所放置的位置不同,先会找到自己用户的setting.xml,如果没有相应的配置信息,则使用系统级别的默认配置.

如果不是多用户用一台机器的话, 用多个配置文件反而麻烦, 所以一个人用的话, 就只需要maven目录下conf/settings.xml就可以了

仓库目录设置: 

localRepository 可以配置本地仓库所在的位置.仓库目录默认是Default: ${user.home}/.m2/repository

比如改为 D:/apache-maven-3.3.3/repository/

<localRepository>D:/apache-maven-3.3.3/repository/</localRepository>

另外可以使用镜像站点方便下载 :
可以参考帮助文件http://maven.oschina.net/help.html

  <mirror>
        <id>nexus-osc</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
      </mirror>
  </mirrors>



maven常用命令


目录结构 (test目录是用junit4 测试)
-src
	-main
		-java
			-package
	-test
		-java
			-package
	-resources
-pom.xml



比如包的名字是com.example.model
那么java文件应该存放在\src\main\java\com\example\model目录下

\src\main\java 这部分是maven默认的java项目路径 

创建pom文件, 找一个现存的pom.xml文件copy过来, 比如从spring或structs2的jar包里
pom.xml文件是放在项目的根目录里面

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.example.model</groupId>
	<artifactId>model</artifactId>
	<version>1.0.0-SNAPSHOT</version>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
		</dependency>
	</dependencies>

</project>


pom文件中<modelVersion>4.0.0</modelVersion>  这个是固定的

<groupId>com.example.model</groupId>

<artifactId>--</artifactId>
<version></version>


groupId 就是项目的包名 package name
artifactId 是模块名字,  一般是项目名或者是类的名字
version   版本名

mvn -v 查看maven版本
mvn compile   编译当前项目,  会在项目的根目录下创建target目录, target目录中是class文件
mvn test  调用jutil ,test标记的方法
mvn package  把当前项目打包成一个jar文件 放在target目录,HelloWorld-1.0.0-SNAPSHOT.jar
mvn clean     删除target目录
mvn install   把本项目生成的jar文件安装到本地仓库中.

[INFO] Installing D:\java-workspace\test_maven\target\HelloWorld-1.0.0-SNAPSHOT.jar to D:\apache-maven-3.3.3\repository\com\example\model\HelloWorld\1.0.0-SNAPSHOT\HelloWorld-1.0.0-NAPSHOT.jar
[INFO] Installing D:\java-workspace\test_maven\pom.xml to D:\apache-maven-3.3.3\repository\com\example\model\HelloWorld\1.0.0-SNAPSHOT\HelloWorld-1.0.0-SNAPSHOT.pom


安装后 JAR文件还有项目的原始pom文件会copy放在 D:\apache-maven-3.3.3\repository\com\example\model\HelloWorld\1.0.0-SNAPSHOT


这样我们一个项目安装到本地仓库后, 那这个jar就能被其他项目调用 , 其他项目可以把这个项目作为依赖的包


archetype 插件, 创建项目框架目录


创建目录的两种方式


1. archetype:generate 按提示进行选择, 手工输入groupId等信息


2. archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名称-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名

maven中的坐标和仓库
构件使用坐标作为其在仓库中的唯一标识,
坐标的组成 groupId,artifactId,version 

仓库
本地仓库和远程仓库 如果本地仓库没有这个构件, 则去全球仓库查找
bin/maven-model-builder.jar 这个jar文件里面pom-4.0.0.xml 是所有pom的父类, 里面有定义一个根仓库地址, 基本所有的开源的项目都能找到


镜像仓库
国外仓库有时访问不了, 可以访问镜像仓库
修改setting.xml 里面定义 
<mirror>
        <id>maven.net.cn</id>
        <mirrorOf>central</mirrorOf>
        <name>central mirror in china</name>
        <url>http://maven.net.cn/content/groups/public/</url>
    </mirror>


    一旦指定了这个中央仓库就不会使用原来的中央仓库



生命周期
clean 清理(clean,)
default 构建项目 (compile,test,package,install)
site 生成项目站点



clean:
pre-clean 执行清理前的工作
clean 清理上一次构建生成的
post-clean 


default: 构建项目
compile test package install


site: 根据pom生成项目站点
pre-site 生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布站点到服务器



Eclipse 添加Maven插件


help——>Install new Software
在线安装, http 地址:http://m2eclipse.sonatype.org/sites/m2e

运行提示缺少emf错误
requires 'org.eclipse.emf.ecore.edit 0.0.0' 

结果添加镜像站点, 选择对应的Eclipse版本juno对应的地址 http://android-mirror.bugly.qq.com:8080/eclipse_mirror/juno/


本只想安装emf, 但出来好多选项不知道具体是哪一个,尝试直接搜索m2e, 很顺利就安装了


创建maven项目, 类型filter:web ,  选择 org.apache.maven.archetypes 
填入坐标信息后项目创建完成

index.jsp 提示错, 因为没有servlet api

修改pom.xml添加servlet , 打开仓库镜像地址http://maven.oschina.net/   搜servlet


搜索出结果后  站点给出了坐标, 直接复制到pom
<dependency>
  <groupId>org.mobicents.servlet.sip</groupId>
  <artifactId>sip-servlets-bootstrap</artifactId>
  <version>0.3</version>
  <scope>provided</scope>
</dependency>

修改scope 只在编译时和测试时运行
后续依赖范围 依赖传递等以后再看


===============================================================


Eclipse 集成Maven


1. 插件名m2e    myeclipse默认有装这个插件


2. 配置使用我们自行下载的更新版本Maven : preferences -> maven -> Installations 把下载安装好的maven目录添加进来, 并勾选






使用创建Web开发目录目录环境


在命令行下进入到工作目录运行命令:
mvn archetype:generate -DgroupId=myGroupId -DartifactId=spring-study -DarchetypeArtifactId=maven-archetype-webapp


使用maven命令行模式创建Spring目录环境, mvn 命令可以创建多种web开发的目录结构, 上面命令是交互式创建一个适合Spring的目录结构, 
-DgroupId=myGroupId 指定group id为myGroupId
DartifactId 指定artifact Id 为 spring-study


命令运行成功后会创建目录spring-study(和artifactId同名), 并且会创建其他子目录结构src, target 等目录和pom.xml文件


 






Eclipse 里面导入工程,
IMPORT -> Maven 工程(Maven4MyEclipse)-> Existing Maven Projects -> Root Directrory选择工程主目录就是前面命令行模式创建的目录
Eclipse 会自动发现并选中mvn创建的pom.xml文件




导入后提示有错误, 选中当前工程, 右键 --> Properties --> Java Build Path -> Order and Export 里面有提示缺少目录
src/main/java
src/test/java
右键new 新建对应的文件夹后按F5刷新




Resource Path Location Type The superclass "javax.servlet.http.HttpServlet" was not foun


解觉方法:右击项目——>属性(Properties)——>找到Build Java Path——>右边有libraries选项,点击——>Add Libraries——>Server Runtime——>next,再选中你的tomcat服务器——>finish,回到Java Build Path右边界面中的Orader and Export——>
选中刚刚添加的ok就可以了






打开pom.xml文件 , Artifact属性, 修改Packaging 属性为jar
还可以修改其他属性
properties, dependencyManagement,dependencies,




web应用相关的配置web.xml


servlet标签,    servlet-mapping标签


然后就可以开始在源码目录下 例子里是java目录, 创建类文件比如HelloMvcController这个类, 并在类里面写一个测试的方法


然后添加注释 , 表示访问这个类的路径是根目录下/hello
@controller
@RequestMapping("/hello")




这个类下添加方法
@RequestMapping("/mvc")
public String helloMvc(){
return "home";
}


这样表示的意思是访问 host:8080/hello/mvc 地址由home.jsp 文件来返回


命令行下进入到项目路径下运行 mvn jetty:run 就能启动服务器了前提是jetty插件安装好了


MyEclipse 下创建Spring项目 http://www.blog.163.com/hongxing_w/blog/static/2629725720112289433722/





========================================




Spring 入门篇






接口实现的变动不影响各层间的调用, 还可以隐藏具体实现 , 和实现多态性的组件
接口:
接口用于沟通中介物的抽象化
实体把自己提供给外界的一种抽象化说明,用以由内部操作分离出外部沟通方法,
使其能被修改内部而不影响外界其他实体与其交互的方式
对应java接口即声明, 声明了哪些方法是对外公开提供的


Spring IOC容器  ,IOC是控制反转, 使用接口实现控制权的转移, 应用程序本身不负责依赖对象的创建和维护, 而是由外部容器负责创建和维护,   DI 依赖注入是一种实现方式.


IOC中把所有接口都称为bean , 接口在Spring中,也就是beans
配置方式有两种, 一种是基于XML配置, 还有一种是基于注解


XML配置方式:
src-> resources 目录下创建文件 spring-ioc.xml
这个配置文件






JUnit—Java单元测试必备工具 , 可以直接调用某个函数




=================================================




MyEclipse 


MyEclipse 自带有tomcat插件可以测试


但还是应该单独安装tomcat, 然后设置关联window -> Preferences -> MyEclipse -> server -> Tomcat 


设置好了后, 就可以在工具栏测试启动独立安装的tomcat , 
还有部署的时候也应选择独立安装的tomcat而不是自带的服务器tomcat插件








导入外部工程 , 最好是使用原来的目录 而不是拷贝到当前工作空间,
导入后 rebuild一下, Project -> clean 





eclipse中出现错误:


Description Resource Path Location Type
Access restriction: The xxx is not accessible due to restriction on required library D:\java\jdk1.6.0_10\jre\lib\rt.jar xxx.java /xxx/src/xxx line 49 Java Problem






因为上述xxx.java是从某SDK中导入的,它的代码不可能有问题,那么只能是本地的eclipse环境有问题。






解决办法:


在build path中,将JRE System Library,remove掉,再重新add回来。




原因可能是有jar冲突。
This works because you have multiple classes in different jar files. Removing and re-adding the jre lib will make the right classes be first. If you want a fundamental solution make sure you exclude the jar files with the same classes.


部署项目 --> 启动测试


如果有修改项目中的文件, 则需要重新部署, 然后重新启动server
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值