您的位置:首页 > 其它

关于Maven的一些笔记

2013-01-15 14:23 399 查看
Maven3简单运行:mvn archetype:generate

Maven2直接使用此方法不安全,没有指定archetype插件的版本,maven会去下载最新的版本,可能得到不稳定的ANAPSHOT版本,导致运行失败。而maven3中,及时没有指定版本,Maven也只会解析最新稳定版本。

Maven2则运行:mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
org.apache.maven.plugins--->Maven官方插件的groupId
maven-archetype-plugin--->archetype插件的artifactId
2.0-alpha-5--->该插件目前最新的稳定版本
Generate--->要使用的插件目标
《会自动选择编号》
命令行:
mvn archetype:generate -DgroupId=包 -DartifactId=项目名称 -DarchetypeArtifactId=maven-archetype-webapp

src/main/java源文件代码,其后目录为groupId定义的包(mkdir)
src/test/java 测试单元

mvn eclipse:eclipse可将工程导入eclipse中
mvn clean compile
mvn clean package
mvn tomcat:run / mvn jetty:run
mvn clean install<将项目打包成压缩包放入本地仓库>

mvn install:install-file -DgroupId=net.sf.saxon -DartifactId=saxon-dom

-Dversion=9.0 -Dpackaging=jar -Dfile=/home/ubuntu/saxon-dom-9.0.jar

说明:-Dfile指第三方jar的路径,其它的注意要确保maven命令中groupId、artifactId、version与pom.xml中的配置相同,-Dpackaging表示加载的文件类型
mvn install:install-file -Dfile=jar包的位置(记住末尾加.jar后缀) -DgroupId=所放的groupId -DartifactId=artifactId -Dversion=版本 version -Dpackaging=jar
mvn install:install-file -DgroupId=com.adobe.flex.compiler -DartifactId=asdoc
-Dversion=3.2.0.3958 -Dclassifier=template -Dpackaging=zip
-Dfile=/home/ubuntu/asdoc-3.2.0.3958-template.zip
说明:加载zip包与加载jar基本相同,注意加载文件的类型“-Dpackaging”

Tomcat :
Eclipse中开启tomcat打开页面时,在tomcat的service.xml中<Host></Host>加入
<Context path="/sample" docBase="工程目录" debug="0" reloadbale="true" />
在浏览器地址中输入:http://localhost:8080/sample/工程中的jsp页面

NetBeans
NetBeans IDE是一个屡获殊荣的集成开发环境,可以方便的在Windows,Mac,Linux和solaris中 运行。NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeans IDE目前支持PHP、Ruby、JavaScript、Ajax、Groovy、Grails和C /C + +等开发语言。

Maven管理项目依赖
依赖管理的底层基础---坐标

坐标:需要用到依赖时,Maven定义了规则:世界上任何一个构建都可以使用Maven坐标唯一标识,Maven的坐标元素包括groupId,artifactId,version(依赖的基本坐标),packaging(依赖的类型,其默认值为jar),classifier(定义构建输出的一些附属构件,不能直接定义,由附加的插件帮助生成)。只要提供正确的坐标元素,Maven就能找到对应的构件。
Maven内置了一个中央仓库的地址《http://repo1.maven.org/maven2》,包含了世界上大部分流行的开源项目构件,Maven会在需要的时候去那里下载。

依赖包含的元素有:
groupId,artifactId,version(依赖的基本坐标)
type:依赖的类型,同packaging
scope:依赖的范围,为test时即为测试范围
optional:标记依赖是否可选
exclusions:用来排除传递性依赖

Maven编译项目主代码时使用一套classpath,编译和测试时使用另一套classpath,JUnit以依赖的方式引入到测试使用的classpath中,实际运行Maven项目又会使用一套classpath
依赖范围(元素scope表示)用来控制依赖与3中classpath(编译classpath,测试classpath,运行classpath)
Maven依赖范围:
Compile:编译依赖范围,默认使用,对于编译测试运行三种classpath都有效(spring-core)
Test:测试依赖范围,只对测试classpath有效,编译主代码及运行项目时无法使用此类依赖(JUnit)
Provided:已提供依赖范围,对于编译测试classpath有效,运行无效(servlet-api)
Runtime:运行时依赖范围,测试运行classpath有效,编译主代码时无效(JDBC)
System:系统依赖范围,和Provided完全一致,必须通过systemPath元素显式指定依赖文件的路径,不是通过Maven仓库解析,与本机系统绑定,可能造成构建的不可移植,谨慎使用,systemPath可以使用环境变量
Import:导入依赖范围,不会对3中classpath产生实际影响

传递性依赖
A依赖于B,B依赖于C,A对于B是第一直接依赖,B对于C是第二直接依赖,A对于C是传递性依赖。第一直接依赖范围和第二直接依赖范围决定了传递性依赖的范围。
依赖调解
1 A-->B-->C-->X(1.0) A-->D-->X(2.0)
两个版本都被解析是不对的,会造成依赖重复:路径最近者优先
2 A-->B-->Y(1.0) A-->C-->Y(2.0)
Maven2.0.9开始定义:第一声明者优先
3 A-->B、B-->X B-->Y
X、Y是可选依赖,依赖不会得以传递

归类依赖:
<properties>
<springframework.version>2.5.6></ springframework.version>
</properties>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</ artifactId>
<version>${springframework.version}</version>
</ dependency>
可多次使用

mvn dependency:list--->查看当前项目的已解析依赖
mvn dependency:tree--->查看依赖树
mvn dependency:analyze:分析编译主代码和测试代码用到的依赖
显式两部分:
Used undeclared dependencies:项目中使用到但是没有显式声明的依赖,意味潜在的风险,显式声明任何项目中直接用到的依赖
Unused declared dependencies:项目中未使用但显式声明的依赖,但是analyze:分析编译主代码和测试代码用到的依赖,要仔细测试依赖是否有用

Maven 仓库:http://juvenshun.iteye.com/blog/359256

curl 标准输出打印servlet的输出:curl http://ip:端口/项目/web.xml中<servlet><servlet-name>name</servlet-name>......
附件:http://down.51cto.com/data/2362163
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Maven学习