Maven步步为营(二)POm

创建私服nexus

1, 下载并解压zip,http://nexus.sonatype.org/downloads

2, 启动:D:\nexus-2.7.1-01-bundle\nexus-2.7.1-01\bin\jsw\windows-x86-64

3, 访问http://localhost:8081/nexus, 登录<admin,admin123>, 

可以管理nexus内置的仓库(够用),也可以创建自己的

maven在setting.xml里配置私服后,会自动下载到私服,再到本地仓库

D:\nexus-2.7.1-01-bundle\sonatype-work\nexus\storage\central\org\springframework

D:\repo\org\springframework

总结:

1, plugin扩展机制,好!

几乎每个mvn命令都对应一个plugin,在D:\repo\org\apache\maven\plugins目录下。

比如:maven-compiler-plugin, maven-jar-plugin, maven-surefire-plugin...

2, 项目(对应一个jar)下载或者安装到Maven本地仓库后,其他项目才能使用!!!!!!!!!!!!!!!

Maven生命周期,从大量项目和构建工具中学习反思,对构建过程的抽象:

项目的各个阶段phase:清理,初始化,编译(maven-compiler-plugin),测试(maven-surefire-plugin),打包,集成测试,验证,部署,站点生成。

抽象,意味着不做实际工作(交给插件完成比如),类似设计模式中的模板方法

validate验证项目是否正确,以及所有为了完整构建必要的信息是否可用

generate-sources生成所有需要包含在编译过程中的源代码

process-sources处理源代码,比如过滤一些值

generate-resources生成所有需要包含在打包过程中的资源文件

process-resources复制并处理资源文件至目标目录,准备打包

compile编译项目的源代码

process-classes后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)

generate-test-sources生成所有包含在测试编译过程中的测试源码

process-test-sources处理测试源码,比如过滤一些值

generate-test-resources生成测试需要的资源文件

process-test-resources复制并处理测试资源文件至测试目标目录

test-compile编译测试源码至测试目标目录

test使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布

prepare-package在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现)

package将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR

pre-integration-test执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境

integration-test如果有必要的话,处理包并发布至集成测试可以运行的环境

post-integration-test执行一些在集成测试运行之后需要的动作。如清理集成测试环境。

verify执行所有检查,验证包是有效的,符合质量规范

install安装包至本地仓库,以备本地的其它项目作为依赖使用

deploy复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)

项目聚合: 一次命令构建两个项目

<project...>

<modelVersion>4.0.0</modelVersion>

<groupId>com.juvenxu.mvnbook.account</groupId>

<artifactId>account-aggregator</artifactId>

<version>1.0.0-SNAPSHOT</version>

<packaging>pom</packaging>//聚合必须为pom,否则无法构建

<name>Account Aggregator</name>

<modules>

<module>account-email</module>

<module>account-persist</module>

</modules>

</project>

项目继承:继承父pom的配置

可继承的元素:groupId,version...dependencies,build. 不可继承的元素:artifactId

<parent>

<groupId>com.juvenxu.mvnbook.account</groupId>

<artifactId>account-parent</artifactId>

<version>1.0.0-SNAPSHOT</version>

<relativePath>../account-parent/pom.xml</relativePath>

</parent>

<artifactId>account-email</artifactId>

<name>Account Email</name>

注意:可能给未来的子项目引入不必要的依赖。故,一般最好只继承version,scope

反应堆(多个模块组成的一个构建过程)构建顺序

Reactor Build Order:

Account Parent

Account Email

Account Persist

Account Aggregator

剪裁反应堆: mvn install -pl account-email, account-persist //只构建这两个项目

超级POM(类似Object类)

%MAVEN_HOME%/lib/maven-model-builder-x.x.x.jar\org\apache\maven\model/pom-4.0.0.xml

预定义了:仓库<repositories>,插件仓库<pluginRepositories>,<build>,<profiles>

com.google.code.kaptcha:kaptcha:jar:jdk15:2.3  这个不在中央仓库中,需要自己添加代理仓库-->仓库组。

指定某个测试类,需要进入当前项目下,不可以在父目录中。

mvn test -Dtest=RandomGeneratorTest

//测试覆盖率报告,在targer/site/cobertura/index.html

D:\workspace\account-parent\account-captcha>mvn cobertura:cobertura

hudson

持续集成CI(Continuous Integration)

稍等hudson启动

C:\Users\river\Downloads>java -jar hudson-3.1.2.war

纯java打war包

1、D:\workspace\wnjWeb>jar cvf wnjWeb.war *.*

2、将war文件拷贝到tomcat\webapps\下,(将必要的jar文件拷贝到tomcat\lib??)

3、D:\study\apache-tomcat-7.0.52\bin>startup.bat

4、打开浏览器访问http://localhost:8080/wnjWeb/hello

猜你喜欢

转载自luckywnj.iteye.com/blog/2019531