最近拜读了许晓斌的<<Maven 实战>> ,这篇文章是个人的学习摘要,作回顾用。
大家有兴趣的话,这里有些样章下载:http://www.juvenxu.com/mvn-in-action/
1.下载地址&仓库&插件
下载地址:http://maven.apache.org/download.html
中央仓库: http://repo1.maven.org/maven2/
中央仓库中国镜像:http://maven.net.cn/content/groups/public
Java.net :http://download.java.net/maven/2/
JBoss: http://repository.jboss.com/maven2/
定义本地仓库:~/.m2/setting.xml
<settings>
<localRepository>D:\.....</localRepository>
</settings>
配置远程仓库:pom.xml中
<respositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</>
<url>http://repository.jboss.com/maven2/</url>
<releases>//发布版本下载控制
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</releases>
<snapshots>//快照版本下载控制
<enabled>false</enabled>
<updatePolicy>daily</updatePolicy>//下载间隔,可选 daily, never, always//每次构建都检查, interval:x //每隔x分钟检查一次更新
</snapshots>
<layout>default</layout>
</repository>
</respositories>
pom.xml远程部署配置
<distributionManagement>
<repository>
<id>***</id>//远程仓库id
<name>***</name>//方便阅读
<url>***</url>
</respository>
<snapshotRepository>
<id>***</id>//远程仓库id
<name>***</name>//方便阅读
<url>***</url>
</snapshotRepository>
</distributionManagement>
setting.xml中配置认证信息
<servers>
<server>
<id>my-proj</id>//对应远程仓库id
<username>***</username>
<password>***</password>
</server>
</servers>
镜像配置: setting.xml中,所有的请求都会转发到镜像中
<mirrors>
<mirror>
<id>***</id>
<name>***</name>
<url>***</url>
<mirrorOf>central</mirrorOf>//仓库id,这里表示是中央仓库的镜像,如果是*则表示转接所有远程仓库请求,也可以多个,中间用逗号隔开:repo1,repo2
//*,!repo1 , 所有远程仓库除repo1外
</mirror>
</mirrors>
仓库搜索工具
Sonatype Nexus : http://repository.sonatype.org/
Jarvana : http://www.jarvana.com/jarvana/
MVNbrowser: http://www.mvnbrowser.com
MVNrepository: http://mvnrepository.com/
插件信息:
http://maven.apache.org/pugins/index.html http:////mojo.codehaus.org/plugins.html
有用插件:
Maven Release Plugin 版本发布;
cargo-maven2-plugin 自动化部署;
jetty-maven-plugin web测试;
maven-gpg-plugin, GPG:http://www.gnupg.org/download/ 给maven构件加密 hkp://pgp.mit.edu 美国麻省理工大学公钥服务器
maven-surefire-plugin: 单元测试,集成测试
maven-site-plugin:生成站点 //mvn site
maven-javadoc-plugin
maven-jxr-plugin:在生成站点时配置该插件,会以Web页面的形式将Java源代码展现出来
maven-checkstyle-plugin
maven-pmd-plugin:分析Java源代码,查找代码中的问题
maven-changelog-plugin
cobertura-maven-plugin
私服工具: Archiva 开源; Artifactory 核心开源; Nexus 核心开源, 专业版本需要购买
2.环境变量:
M2_HOME
path:%M2_HOME%\bin
MAVEN_OPTS -Xms128m -Xmx512m 增加jvm内容,优化Maven运行,Maven一般需要较大内存
3.常用命令:
mvn -v
mvn help:system
mvn clean compile
mvn clean package
mvn clean test
mvn clean deploy //部署到版本仓库
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中
mvn archetype:generate //创建项目架构
mvn dependency:list //查看已解析依赖
mvn dependency:tree
mvn dependency:analyze
mvn install -Dmaven.test.skip=true// -D 参数的使用,这里是跳过test阶段
-am, --also-make :同时构建所列模块的依赖模块
-amd -also-make-dependents 同时构建依赖于所列模块的模块 mvn clean install -pl account-parent -amd -rf account-email
-pl, --projects <arg> 构建指定的模块,模块间用逗号分隔 mvn clean install -pl account-email,account-persist
-rf -resume-from <arg> 从指定的模块回复反应堆 mvn clean install -rf account-email
mvn help:active-profiles :查看当前激活的profiles
mvn help:all-profiles : 查看所有profiles
mvn help:effective -pom 查看完整的pom信息
4.配置代理:
ping repo1.maven.org
如果需要使用代理:~/.m2/settings.xml (可以从M2_HOME/conf/settings.xml复制,这里是用户级别的配置,升级不受影响。前者是全局配置,升级会受影响)
增加
<proxies>
<proxy> 可以有多个proxy,默认使用第一个
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>218.14.227.197</host>
<!--
<username>***</username>
<password>***</password>
<nonProxyHosts>repository.mycom.com |*.google.com</nonProxyHosts> 哪些主机不需要代理
-->
</proxy>
</proxies>
5.eclipse maven插件:
http://m2eclipse.sonatype.org/sites/m2e
注意:插件的maven可能和本机安装的不一样,最好指定本地的. Windows-Preferences Maven-Installation
6.历史原因,compiler插件默认只支持编译Java1.3,因为需要配置该插件使其支持Java5
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
7.为了生成可执行的jar文件,需要借助maven-shade-plugin,配在plugins中最下方
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
<goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.......HelloWorld</mainClass>
<transformers>
</configuration>
</execution>
<executions>
8.classpath & 依赖范围: 编译classpath , 测试classpath , 运行classpath
依赖范围: compile(默认值), test, provided(对运行时无效,如servlet-api,最终打包时不会被打入), runtime,
import:该依赖范围不会对三种classpath产生实际影响
system(慎用,和provided依赖范围相同,此类依赖不通过Maven 仓库解析,往往和本机系统绑定,可以造成构建的不可移植)
9.依赖调解
路径最近者优先
路径相同者,第一声明者优先
10.生命周期
a.clean : pre-clean,clean,post-clean
b.default:validate, initialize,generate-sources,process-sources,generate-resources,process-resources,compile,process-classes,generate-test-sources,process-test-sources
,generate-test-resources,process-test-resources,test-compile,process-test-classes,test,prepare-paceage,package,pre-integration-test,integration-test,post-integration-test
verify,install,deploy
c.site:建立和发布站点. pre-site,site,post-site,site-deploy
绑定插件到生命周期某个阶段pom.xml
<build>//这里是绑定打源代码jar包到verify阶段
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
<goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
11.聚合&继承
聚合:聚合模块通常放在项目目录的最顶层,其pom.xml中 packageing 属性必须为pom
继承:子模块中pom.xml parent写法
<parent>
<groupId>***</groupId>
<artifactId>***</artifactId>
<version>***</version>
<relativePath>../account-parent/pom.xml</relativePath>//父模块pom.xml位置,默认为../pom.xml
</parent>
可被继承的pom元素: groupId, version, description, organization, inceptionYear, url //项目的url地址
developers, contributors, disributionManagement //项目的部署配置, issueManagement, ciManagement, scm// 项目版本控制信息
mailingLists //项目的邮件列表信息, properties , dependecies, repositories, dependencyManagement, build, reporting
在父pom中声明 dependencyManagement 中的依赖不会实际引入jar包,只有在子pom中声明了相应的dependency才会实际引入,这样的好处在于控制引入jar包的版本信息
子pom中不需要声明版本信息. 当然也可以在父pom中将dependencies 中的dependency scope 声明为import, type必须为pom,达到相同效果
12.Maven 属性 & Profile
内置属性: ${basedir}项目根目录; ${version} 项目版本号
Pom属性: ${project.artifactId}, ${project.build.sourceDirectory}, ${project.build.testSourceDirectory},${project.build.directory}, ${project.outputDirectory}, ${project.testOutputDirectory}, ${project.groupId}, ${project.version}, ${project.build.finalName}
自定义属性
Settings: ${settings.localRepository} ,引用settings.xml文件中的XML元素的值
Java系统属性: ${user.home}
环境变量属性: ${env.JAVA_HOME}
注意:默认情况下,maven属性只能被pom文件解析,如果要在项目中使用,需要额外配置
<profiles>
<profile>
<id>dev</id>
<properties>
<db.driver>com.mysql.jdbc.Driver</db.dirver>
<db.url>jdbc:mysql://***</db.url>
<db.username>***</db.username>
<db.password>***</db.password>
</properties>
</profile>
</profiles>
...
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>//是否启用过滤
</resource>
</resources>
...
mvn clean install -Pdev //这里也可以激活多个profile,中间用逗号隔开
mvn clean install -Pdev1,dev2
如果要某个profile默认一直处于激活状态,settings.xml
<settings>
...
<activeProfiles>
<activeProfile>dev1</activeProfile>
</activeProfiles>
...
</settings>
系统属性激活
<profiles>
<profile>
<activation>
<property>
<name>test</name>
<value>x</value> //可选,加上则表示test=x时才激活, mvn clean install -Dtest=x
</property>
</activation>
</profile>
</profiles>
操作系统激活
<profiles>
<profile>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
</profile>
</profiles>
文件存在与否激活
<profiles>
<profile>
<activation>
<file>
<missing>x.properties</missing>
<exists>y.properties</exists>
</file>
</activation>
</profile>
</profiles>
默认激活
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
Profile种类
pom.xml :只对当前项目有效
用户settings.xml //对项目的移植可能会产生问题
全局settings.xml //对项目的移植可能会产生问题
Maven可以对资源文件进行过滤,也可以在profile中激活集成测试
分享到:
相关推荐
Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清 Maven实战 高清
Maven实战Maven实战Maven的安装、配置及使用入门
maven 实战 所有源代码
Maven实战 好书 学习参考.pdf
真实,绝对完整版 Maven 实战.pdf
Maven实战.pdf 不可多得的权威maven中文书籍
Maven实战
非常好的一本maven书 Maven实战 完整高清版
Maven实战(基于Maven3).pdf(340页)
Maven 实战(361)_12804356.pdf
《Maven实战》徐晓斌 完整高清版.pdf
Maven实战为许晓斌著。资源里面包括Maven实战pdf、程序所带源码。在eclipse开发时,需要下载m2e,下载地址http://download.eclipse.org/technology/m2e/releases/。eclipse 4.5 以上版本带的有Maven 插件,在下载m2e...
《Maven实战》 许晓斌
Maven实战].许晓斌.高清PDF扫描版.
Maven实战书上附带的源代码
Maven实战(高清完整带书签).pdf
项目管理,maven实战教程,提高对项目的管理和配置,改进项目效率
Maven 实战一本maven入门书,想学习maven的朋友值得一看,