2016-01-06 02:34:24

继承与聚合

(八)maven移植

讲到maven移植,大家可能第一反应就是是指将一个java项目部署到不同的环境中去,实际上,在maven中,它认为当你参加一个组织或一个开源软件的开发时,将它下载到本地机,将它纳入到你的开发系统中的过程被称为maven的移植。

Maven移植和你的操作系统,jdk版本,你的开发工具等等有关。

maven移植级别:

不可移植,不可移植,只能在你的本地机上进行开发,换到其他地方都不可以继续开发和应用了;

环境移植,你的项目针对几个特定的环境进行了配置,它在这几个环境下是可以被运行的,但是把它移植到其他 的未定义的环境之中的话,会出现不可继续运用和开发的情况;

组织内部可移植,通常大家在公司里面开发的时候回发现如果你把东西带回家里,就不可以再使用了;

广义可移植,一些开源软件,如apache,可以在各个系统上进行移植。

Maven 的移植其实是依赖于profile来完成的,profile一般位于pom.xml文件中,它允许你为移植或特殊的需要,自定义一个特殊的构建。

还记得我们上一篇提到的将一个已有的项目交由maven管理?

profile可以几乎覆盖所有的pom元素

当然,也可以将profile抽取到profiles.xml文件中,将这种profile称为外部profile。

例子?

Mvn clean install –PrunTest

会跳过测试用例,因为maven3已经不再支持外部profile,认为这种profile不是很好

(九)maven属性过滤

(十)复杂的多项目管理

多项目管理是maven的核心部分,存在如何集中管理的问题。

从简单的两个项目开始:

新需求1:我们有一个web项目,依赖于一个java项目,如何组织他们的pom文件?

首先创建一个java项目,test1

mvn archetype:generate -DgroupId=com.test.maven -DartifactId=test1 -DpackageName=com.test.maven.test1

将java工程转换成eclipse工程,mvn eclipse:eclipse,并导入到eclipse中;

创建一个web工程, testweb

mvn archetype:generate -DgroupId=com.test.maven -DartifactId=testweb -DpackageName=com.test.maven.testweb -DarchetypeArtifactId=maven-archetype-webapp

把web工程转换为eclipse工程,mvn eclipse:eclipse -DwtpVersion=2.0,并导入到eclipse中;

我们肯定会想到在testweb的pom文件中增加对test1的依赖

 <dependencies>
<dependency>
<groupId>com.test.maven</groupId>
<artifactId>test1</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

但是这样会出现问题,一旦对test1的代码进行了修改,需要转到test1目录下,使用mvn clean install对它重新进行编译打包,安装到本地仓库里;然后再转到testweb目录底下,再次mvn clean install,把它重新打包和安装到本地仓库中去,很麻烦。

我们希望只执行一次mvn clean install 将可以将test1和testweb都重新编译、打包、安装。

创建一个简单工程test,File-new-maven project ,注意只勾选

packaging选择pom(有3种选项:jar 、pom、 war)。

这样生成的工程test只有pom.xml文件。

在test中,使用pom的module元素,将test1和testweb追加成test的子项目

<modules>
<module>../test1</module>
<module>../testweb</module>
</modules>

在test1和testweb的pom中指定其parent

<parent>
<groupId>com.test.maven</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePth>../test</relativePath>
</parent>

这样就可以以test为入口,来对这两个项目进行管理,只需要在test目录下执行一次 mvn clean install

结果build failure,因为????

(十一)、maven相关工具介绍

maven的eclipse插件m2eclipse;maven的仓库管理器Nexus;maven的settings.xml详解

Maven的eclipse插件:

除了创建简单工程,还可以使用Maven的骨架来创建不同规格的maven项目

Quickstart:创建java工程; webapp:创建web工程;pom是没有骨架的

除了创建工程外,还可以从SCM(git svn cvs)导入工程。

maven学习--进阶篇的更多相关文章

  1. maven学习--基础篇

    2016-01-5 16:13:43 发现一些错误,文章修改中…… (部分图片截取自其他地方,不是很清楚) 一. maven的项目创建和基本命令 maven是一个项目管理工具,包含了一个项目对象模型P ...

  2. Python 学习 —— 进阶篇(装饰器、类的特殊方法)

    Python基础部分学完之后,在进入其OOP部分前,先理解一下其装饰器这种结构,其功能可类比于Java中的面向切面编程,下面参见具体实例: def log(f): def fn(x): print ' ...

  3. JavaScript学习笔记 - 进阶篇(1)- JS基础语法

    前言 JavaScript能做什么? 1.增强页面动态效果(如:下拉菜单.图片轮播.信息滚动等) 2.实现页面与用户之间的实时.动态交互(如:用户注册.登陆验证等) JS进阶篇学习什么? 在JavaS ...

  4. PHP学习笔记 - 进阶篇(11)

    PHP学习笔记 - 进阶篇(11) 数据库操作 PHP支持哪些数据库 PHP通过安装相应的扩展来实现数据库操作,现代应用程序的设计离不开数据库的应用,当前主流的数据库有MsSQL,MySQL,Syba ...

  5. PHP学习笔记 - 进阶篇(10)

    PHP学习笔记 - 进阶篇(10) 异常处理 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被 ...

  6. PHP学习笔记 - 进阶篇(9)

    PHP学习笔记 - 进阶篇(9) 图形图像操作 GD库简介 GD指的是Graphic Device,PHP的GD库是用来处理图形的扩展库,通过GD库提供的一系列API,可以对图像进行处理或者直接生成新 ...

  7. PHP学习笔记 - 进阶篇(8)

    PHP学习笔记 - 进阶篇(8) 日期与时间 取得当前的Unix时间戳 UNIX 时间戳(英文叫做:timestamp)是 PHP 中关于时间与日期的一个很重要的概念,它表示从 1970年1月1日 0 ...

  8. PHP学习笔记 - 进阶篇(7)

    PHP学习笔记 - 进阶篇(7) 文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,可以将整个文件全部读取到一个字符串中. $conte ...

  9. PHP学习笔记 - 进阶篇(6)

    PHP学习笔记- 进阶篇(6) 会话控制(session与cookie) 当前的Cookie为: cookie简介 Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据. ...

随机推荐

  1. 在命令行中直接运行带main方法的java

    用了很久的java,基本都是交给服务器完成的执行,有page之类的入口,或者是在IDE工具中直接 Run As Java Application. 并且一直对安装java之后配置JAVA_HOME,p ...

  2. @XmlAccessorType @XmlType 详解

    例子: @XmlAccessorType(XmlAccessType.FIELD) String name=”CY”; } public static void main(String[] args) ...

  3. zabbix自动化监控基础

    zabbix安装配置文档 2 一 zabbix-server 安装配置(基础配置) 2 二 zabbix agent安装配置 5 2.1 主动模式和被动模式 6 2.2 安装配置zabbix_agen ...

  4. NRF51822+STM32bootload——typedef void (*Fun) (void) 理解

    1.typdef 用法如下所示 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned ...

  5. linux make virtual memory more efficient three components

    Page Cache This is used to speed up access to images and data on disk. As pages are read into memory ...

  6. mysql日期时间类型总结

    MySQL 日期类型:日期格式.所占存储空间.日期范围 比较.  日期类型        存储空间       日期格式                 日期范围  ------------ ---- ...

  7. bzoj2463

    题解: 当n为奇数,输出Bob 否则输出Alice 代码: #include<bits/stdc++.h> using namespace std; int n; int main() { ...

  8. Python Django 之 Views HttpRequest HttpReponse

    一.Python Django 之 Views 数据交互 http请求中产生两个人核心对象: http请求:HttpRequest对象 http响应:HttpReponse对象 所在位置django. ...

  9. Flask初级(三)flash使用模板

    Project name :Flask_Plan 模板文件夹未在创建项目时设定的是templates 我们不能总是用return 每个页面去写html,老长了. flask提供了模板引擎,其实也是别人 ...

  10. 玩转X-CTR100 l STM32F4 l CAN通信

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器STM32F4处理器内置CAN ...