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命令中groupIdartifactIdversionpom.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打开页面时,在tomcatservice.xml<Host></Host>加入

<Context path="/sample" docBase="工程目录" debug="0" reloadbale="true" />

在浏览器地址中输入:http://localhost:8080/sample/工程中的jsp页面

 

 

NetBeans

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

 

 

Maven管理项目依赖

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

 

坐标:需要用到依赖时,Maven定义了规则:世界上任何一个构建都可以使用Maven坐标唯一标识,Maven的坐标元素包括groupIdartifactIdversion(依赖的基本坐标)packaging(依赖的类型,其默认值为jar),classifier(定义构建输出的一些附属构件,不能直接定义,由附加的插件帮助生成)。只要提供正确的坐标元素,Maven就能找到对应的构件。

Maven内置了一个中央仓库的地址《http://repo1.maven.org/maven2》,包含了世界上大部分流行的开源项目构件,Maven会在需要的时候去那里下载。

 

依赖包含的元素有:

groupIdartifactIdversion(依赖的基本坐标)

type:依赖的类型,同packaging

scope:依赖的范围,为test时即为测试范围

optional:标记依赖是否可选

exclusions:用来排除传递性依赖

 

Maven编译项目主代码时使用一套classpath,编译和测试时使用另一套classpathJUnit以依赖的方式引入到测试使用的classpath中,实际运行Maven项目又会使用一套classpath

依赖范围(元素scope表示)用来控制依赖与3classpath(编译classpath,测试classpath,运行classpath)

Maven依赖范围:

Compile:编译依赖范围,默认使用,对于编译测试运行三种classpath都有效(spring-core)

Test:测试依赖范围,只对测试classpath有效,编译主代码及运行项目时无法使用此类依赖(JUnit)

Provided已提供依赖范围,对于编译测试classpath有效,运行无效(servlet-api)

Runtime运行时依赖范围,测试运行classpath有效,编译主代码时无效(JDBC)

System系统依赖范围,和Provided完全一致,必须通过systemPath元素显式指定依赖文件的路径,不是通过Maven仓库解析,与本机系统绑定,可能造成构建的不可移植,谨慎使用,systemPath可以使用环境变量

Import导入依赖范围,不会对3classpath产生实际影响

 

 

传递性依赖

A依赖于BB依赖于CA对于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-->BB-->X  B-->Y

XY是可选依赖,依赖不会得以传递

 

 

归类依赖:

<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>......