- 浏览: 958777 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
插件与目标(Plugins and goals)
通过mvn 插件名称:插件目标运行
,如要运行原型插件的create目标
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook
其中插件由maven库提供,也可以自己写插件,并搭建maven库。
默认的mvn库提供了一些常用插件。
每个插件都包含了多个目标,可以根据自己需要决定使用哪个目标
生命周期(Lifecycle)
maven管理的项目由多个生命周期阶段组成整个生命周期,生命周期中的阶段是有序的,可以根据需要,决定当前需要运行的寿命周期,maven默认配置提供了一组默认生命周期阶段。
生命周期阶段实际上是内部封装了对插件目标的调用。
常见的有
resources:resources
Resources插件的resources目标绑定到了 resources 阶段。这个目标复制src/
main/resources下的所有资源和其它任何配置的资源目录,到输出目录。
compiler:compile
Compiler插件的compile目标绑定到了 compile 阶段。这个目标编译src/main/
java下的所有源代码和其他任何配置的资源目录,到输出目录。
resources:testResources
Resources插件的testResources目标绑定到了 test-resources 阶段。这个目标复
制src/test/resources下的所有资源和其它任何的配置的测试资源目录,到测试
输出目录。
compiler:testCompile
Compiler插件的testCompile目标绑定到了 test-compile 阶段。这个目标编
译src/test/java下的测试用例和其它任何的配置的测试资源目录,到测试输出
目录。
surefire:test
Surefire插件的test目标绑定到了 test 阶段。这个目标运行所有的测试并且创
建那些捕捉详细测试结果的输出文件。默认情况下,如果有测试失败,这个目标
会终止。
jar:jar
Jar插件的jar目标绑定到了 package 阶段。这个目标把输出目录打包成JAR文
件。
清理生命周期 (clean)
运行mvn clean将调用清理
生命周期,它包含了三个生命周期阶段:
• pre-clean
• clean
• post-clean
Clean插件的clean目标
( clean:clean)被绑定到清理生命周期中的clean阶段。目标clean:clean通过删除构建
目录删除整个构建的输出。如果你没有自定义构建目录位置,那么构建目录就是定义
在超级POM中的target
它包含了三个生命周期阶段:
• pre-clean
• clean
• post-clean
例如,假设你想要在pre-clean的时候触发一个antrun:run目标任务
也可以自定义clean目标的行为来完成
默认生命周期(default)
默认生命周期是一个软件应用程序构建过程的总
体模型。第一个阶段是validate,最后一个阶段是deploy。
他包含了如下阶段
站点生命周期(site)
生成项目文档和报告。
它包含了四个阶段:
1. pre-site
2. site
3. post-site
4. site-deploy
默认绑定到站点生命周期的插件目标是:
1. site - site:site
2. site-deploy -site:deploy
打包生命周期
绑定到每个阶段的特定目标默认根据项目的打包类型设置。一个打包类型为jar的项
目和一个打包类型为war的项目拥有不同的两组默认目标。 packaging元素影响构建一个项目需要的步骤。举个打包如何影响构建的例子,考虑有两个项目:一个打包类型是pom,另外一个是jar。在package阶段,打包类型为pom的项目会运行site:attachdescriptor目标,而打包类型为jar的项目会运行jar:jar目标。
JAR是默认的打包类型,是最常用的,因此也就是生命周期配置中最经常遇到的打包类型。JAR生命周期默认的插件目标如
POM是最简单的打包类型。不像一个JAR,SAR,或者EAR,它生成的构件只是它本身。没有代码需要测试或者编译,也没有资源需要处理。打包类型为POM的项目的默认目标
Maven Plugin
该打包类型和JAR打包类型类似,除了三个目
标: plugin:descriptor, plugin:addPluginArtifactMetadata,
和plugin:updateRegistry。这些目标生成一个描述文件,对仓库数据执行一些修改。
EJB
忽略,特么
WAR
打包类型和JAR以及EJB类似。例外是这里的package目标是war:war。注意war:war插件需要一个web.xml配置文件在项目的src/main/webapp/WEB-INF目录中。
其它打包类型
可以上打包插件官网查看
坐标
Maven坐标定义了一组标识,它们可以用来唯一标识一个项目,一个依赖,或者Maven
POM里的一个插件。
一个项目的groupId:artifactId:version使之成为一个独一无二的项目;你不能同
时有一个拥有同样的groupId, artifactId和version标识的项目。
虽然‘.’在groupId中很常用,而你应该避免在artifactId中使用
它。因为在解析一个完整限定名字至子模块的时候,这会引发问题。
packaging项目类型,默认是jar,如果打包后的项目是其他类型如war,则写war
maven仓库
默认使用的是http://repo1.maven.org/maven2/
未下载的依赖会下载到/${user.home}/.m2/repository
依赖
具有传递性
site
site生命周期只生成站点,不进行编译,是一个独立的生命周期阶段。该站点根据pom生产对应的项目描述信息
通过mvn 插件名称:插件目标运行
,如要运行原型插件的create目标
mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch03 -DartifactId=simple -DpackageName=org.sonatype.mavenbook
其中插件由maven库提供,也可以自己写插件,并搭建maven库。
默认的mvn库提供了一些常用插件。
每个插件都包含了多个目标,可以根据自己需要决定使用哪个目标
生命周期(Lifecycle)
maven管理的项目由多个生命周期阶段组成整个生命周期,生命周期中的阶段是有序的,可以根据需要,决定当前需要运行的寿命周期,maven默认配置提供了一组默认生命周期阶段。
生命周期阶段实际上是内部封装了对插件目标的调用。
常见的有
resources:resources
Resources插件的resources目标绑定到了 resources 阶段。这个目标复制src/
main/resources下的所有资源和其它任何配置的资源目录,到输出目录。
compiler:compile
Compiler插件的compile目标绑定到了 compile 阶段。这个目标编译src/main/
java下的所有源代码和其他任何配置的资源目录,到输出目录。
resources:testResources
Resources插件的testResources目标绑定到了 test-resources 阶段。这个目标复
制src/test/resources下的所有资源和其它任何的配置的测试资源目录,到测试
输出目录。
compiler:testCompile
Compiler插件的testCompile目标绑定到了 test-compile 阶段。这个目标编
译src/test/java下的测试用例和其它任何的配置的测试资源目录,到测试输出
目录。
surefire:test
Surefire插件的test目标绑定到了 test 阶段。这个目标运行所有的测试并且创
建那些捕捉详细测试结果的输出文件。默认情况下,如果有测试失败,这个目标
会终止。
jar:jar
Jar插件的jar目标绑定到了 package 阶段。这个目标把输出目录打包成JAR文
件。
清理生命周期 (clean)
运行mvn clean将调用清理
生命周期,它包含了三个生命周期阶段:
• pre-clean
• clean
• post-clean
Clean插件的clean目标
( clean:clean)被绑定到清理生命周期中的clean阶段。目标clean:clean通过删除构建
目录删除整个构建的输出。如果你没有自定义构建目录位置,那么构建目录就是定义
在超级POM中的target
它包含了三个生命周期阶段:
• pre-clean
• clean
• post-clean
例如,假设你想要在pre-clean的时候触发一个antrun:run目标任务
<project> ... <build> <plugins>... <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>file-exists</id> <phase>pre-clean</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <!-- adds the ant-contrib tasks (if/then/else used below) --> <taskdef resource="net/sf/antcontrib/antcontrib.properties" /> <available file="/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/content-zh/target/book.jar" property="file.exists" value="true" /> <if> <not> <isset property="file.exists" /> </not> <then> <echo>No book.jar to delete</echo> </then> <else> <echo>Deleting book.jar</echo> </else> </if> </tasks> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>ant-contrib</groupId> <artifactId>ant-contrib</artifactId> <version>1.0b2</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
也可以自定义clean目标的行为来完成
<project> <modelVersion>4.0.0</modelVersion> ... <build> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <configuration> <filesets> <fileset> <directory>target-other</directory> <includes> <include>*.class</include> </includes> </fileset> </filesets> </configuration> </plugin> </plugins> </build> </project>
默认生命周期(default)
默认生命周期是一个软件应用程序构建过程的总
体模型。第一个阶段是validate,最后一个阶段是deploy。
他包含了如下阶段
生命周期阶段 | 描述 |
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,或者EA |
pre-integration-test | 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境 |
integration-test | 如果有必要的话,处理包并发布至集成测试可以运行的环境 |
post-integration-test | 执行一些在集成测试运行之后需要的动作。如清理集成测试环境。 |
verify | 执行所有检查,验证包是有效的,符合质量规范 |
install | 安装包至本地仓库,以备本地的其它项目作为依赖使用 |
deploy | 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关) |
站点生命周期(site)
生成项目文档和报告。
它包含了四个阶段:
1. pre-site
2. site
3. post-site
4. site-deploy
默认绑定到站点生命周期的插件目标是:
1. site - site:site
2. site-deploy -site:deploy
打包生命周期
绑定到每个阶段的特定目标默认根据项目的打包类型设置。一个打包类型为jar的项
目和一个打包类型为war的项目拥有不同的两组默认目标。 packaging元素影响构建一个项目需要的步骤。举个打包如何影响构建的例子,考虑有两个项目:一个打包类型是pom,另外一个是jar。在package阶段,打包类型为pom的项目会运行site:attachdescriptor目标,而打包类型为jar的项目会运行jar:jar目标。
JAR是默认的打包类型,是最常用的,因此也就是生命周期配置中最经常遇到的打包类型。JAR生命周期默认的插件目标如
生命周期阶段 | 目标 |
process-resources | resources:resource |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | jar:jar |
install | install:install |
deploy | deploy:deploy |
POM是最简单的打包类型。不像一个JAR,SAR,或者EAR,它生成的构件只是它本身。没有代码需要测试或者编译,也没有资源需要处理。打包类型为POM的项目的默认目标
生命周期阶段 | 目标 |
package | site:attach-descriptor |
install | install:install |
deploy | deploy:deploy |
Maven Plugin
该打包类型和JAR打包类型类似,除了三个目
标: plugin:descriptor, plugin:addPluginArtifactMetadata,
和plugin:updateRegistry。这些目标生成一个描述文件,对仓库数据执行一些修改。
生命周期阶段 | 目标 |
generate-resources | plugin:descriptor |
process-resources | resources:resources |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | jar:jar,plugin:addPluginArtifactMetadata |
install | install:install,plugin:updateRegistry |
deploy | deploy:deploy |
EJB
忽略,特么
WAR
打包类型和JAR以及EJB类似。例外是这里的package目标是war:war。注意war:war插件需要一个web.xml配置文件在项目的src/main/webapp/WEB-INF目录中。
生命周期阶段 | 目标 |
process-resources | resources:resources |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | war:war |
install | install:install |
deploy | deploy:deploy |
其它打包类型
可以上打包插件官网查看
坐标
Maven坐标定义了一组标识,它们可以用来唯一标识一个项目,一个依赖,或者Maven
POM里的一个插件。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!--本项目坐标--> <groupId>cgodo</groupId> <artifactId>cgodo_lang</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>cgodo_lang</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <!--引用项目坐标--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
一个项目的groupId:artifactId:version使之成为一个独一无二的项目;你不能同
时有一个拥有同样的groupId, artifactId和version标识的项目。
虽然‘.’在groupId中很常用,而你应该避免在artifactId中使用
它。因为在解析一个完整限定名字至子模块的时候,这会引发问题。
packaging项目类型,默认是jar,如果打包后的项目是其他类型如war,则写war
maven仓库
默认使用的是http://repo1.maven.org/maven2/
未下载的依赖会下载到/${user.home}/.m2/repository
依赖
具有传递性
site
site生命周期只生成站点,不进行编译,是一个独立的生命周期阶段。该站点根据pom生产对应的项目描述信息
发表评论
-
Invalid signature file digest for Manifest main attributes
2015-09-23 14:26 8266java.lang.SecurityException: In ... -
Unable to locate Spring NamespaceHandler for XML schema namespace
2015-09-23 14:00 2323org.springframework.beans.facto ... -
利用maven的filter和profile实现不同环境使用不同的配制
2015-07-30 12:54 718通过命令行模式 https://liyixing1.itey ... -
Nexus 仓库管理器
2015-04-02 11:15 1125简介 仓库管理器有两个 ... -
Profile
2015-03-30 11:55 628Profile是可以在指定环境通过指定指令或者自动触发,用来 ... -
settings.xml
2014-12-31 10:41 751settings.xml文件可以放在两个地方 • Maven安 ... -
项目依赖
2014-12-30 22:19 641依赖具有范围,默认为全局范围 也可以指定依赖范围 Maven ... -
属性 自定义属性 资源过滤
2014-12-30 21:57 1241通过${}访问属性 。Mave ... -
版本号规范,镜像版本SNAPSHOT,LATEST 和 RELEASE 版本
2014-12-30 16:46 6136如果版本号不遵守maven规范,那么maven在对版本进行排序 ... -
依赖传递分析 dependency 插件
2014-12-30 15:29 969基本分析: mvn dependency:analyze 可 ... -
多模块项目
2014-12-29 17:02 503多模块首先需要创建一个父项目,父项目负责对子项目的管理,按照规 ... -
archetype
2014-12-28 21:15 762网址 该插件为maven原型插件,该插件平台上存储了多种常见的 ... -
打包插件 assembly
2014-12-27 14:14 780http://maven.apache.org/plugins ... -
测试插件,surefire-plugin
2014-12-27 13:41 875主页 完整参数 maven默认配置已经加载过该插件 相当于 ... -
help插件
2014-12-24 15:56 725Maven Help 插件有四个目标。前三个目标是—— act ... -
pom.xml
2014-12-24 13:57 733每个maven文件都需要一 ... -
安装maven及测试第一个项目
2014-12-23 11:57 505maven需要配置几个环境变量 M2_HOME,用来指定mav ... -
maven的优势理解
2014-12-23 11:51 10071.对于svn等版本控制的库而言,具有减少上传空间的作用,这个 ... -
maven转eclipse JEE应用
2011-06-19 15:26 2431我的maven结构是 外层应用 biz应用 web应用 创 ...
相关推荐
Maven还提供了一套标准化的项目结构和生命周期,通过插件运行定义在生命周期阶段中的目标和逻辑,从而实现项目的自动化构建。Maven的约定配置原则减少了项目配置的复杂性,使得开发者能够更加专注于代码编写和项目...
第7章:生命周期和插件/7.8 插件解析机制/7.8.1 插件仓库 第7章:生命周期和插件/7.8 插件解析机制/7.8.2 插件的默认groupID和自定义groupID 第7章:生命周期和插件/7.8 插件解析机制/7.8.3 解析插件版本 第7章:...
5. **插件管理**:除了标准生命周期,Maven还允许通过插件扩展功能。M2E支持插件配置,用户可以方便地添加、配置和执行自定义插件目标。 6. **更新项目配置**:当POM.xml有变化时,M2E会自动检测并更新项目设置,如...
m2eclipse提供了对Maven生命周期、依赖管理和构建过程的直观集成,极大地提高了开发效率。 1. **安装与配置** m2eclipse通常可以通过Eclipse的"Install New Software"功能进行安装,选择对应版本的Eclipse ...
本文将深入探讨Maven的核心技术,包括坐标的定义、仓库管理、生命周期与插件以及聚合与继承,帮助读者全面理解并掌握Maven的工作原理。 一、坐标与依赖 1. 坐标 Maven项目的坐标是通过POM(Project Object Model...
在Java开发领域,Maven是广泛使用的项目管理工具,它帮助开发者构建、依赖管理和项目...开发者需要理解Maven的生命周期和插件机制,才能灵活地设计和实现自定义插件。同时,良好的文档和测试也是确保插件质量的关键。
8. **版本管理和生命周期**:Maven的版本管理允许我们轻松地升级或降级依赖版本。生命周期包括clean、validate、compile、test、package、install和deploy等阶段,每个阶段对应一组预定义的目标(goals)。 9. **...
每个插件都有自己的生命周期绑定目标,可以在特定构建阶段执行。 **Maven仓库** Maven使用中央仓库来存储所有公开发布的Java组件。当项目需要某个依赖时,Maven首先会查找本地仓库,如果没有找到,再从远程的中央...
Maven是Java开发中的一款项目管理和综合工具,它简化了构建、依赖管理以及项目生命周期的流程。在本"maven_package"压缩包中,包含了完整的Maven依赖包,这些包广泛适用于各种Java项目,确保了项目的正常运行和高效...
比如:compiler 插件的 compile 目标绑定了 compile 生命周期阶段。 知识点七:Maven的构建配置文件 Maven 支持多个构建配置文件,可以通过命令行参数指定不同的配置文件,如 -P 指定 profile,-D 传递系统属性等。...
- **7.4.2 自定义绑定**:如何自定义插件目标与生命周期的绑定。 - **7.5 插件配置** - **7.5.1 命令行插件配置**:通过命令行配置插件参数。 - **7.5.2 POM中插件全局配置**:在POM中为所有插件目标提供通用配置...
Maven是Java开发中的一款项目管理和综合工具,它通过一套标准化的构建生命周期和依赖管理系统,使得项目的构建、依赖管理和部署变得更加简单。Maven插件则是Maven生态系统中的一个重要组成部分,它们扩展了Maven的...
它通过提供一套标准的项目对象模型(Project Object Model,POM)和自动化构建生命周期,使得开发者能够专注于代码本身,而非依赖库的管理和构建流程。本文将深入探讨Maven的核心功能、工作原理以及在实际开发中的...
它全面介绍了一个全新的完整生命周期的构建工具,特别强调了jar包依赖管理、中央仓库的使用和插件管理等方面。本文将根据提供的文件信息,详细阐述这些知识点。 1. Maven简介 Maven是一个项目管理和自动化构建工具...
这个项目包含了如何下载示例代码、创建项目、构建项目、理解项目对象模型以及核心概念,如插件和目标、生命周期、坐标、仓库和依赖管理等。 ### 自定义Maven项目 Maven允许开发者自定义项目,包括修改项目信息、...
在Maven的项目管理中,有几个核心概念需要掌握:Maven插件和目标、Maven生命周期、Maven坐标、Maven仓库以及Maven依赖管理。 Maven插件和目标: Maven插件是一组完成特定构建任务的独立模块。每个插件可以有多个...
Maven插件是一组可以执行特定任务的目标,生命周期定义了构建过程的不同阶段,坐标用于在仓库中唯一标识一个项目,仓库用来存储项目自身的构件以及第三方依赖,依赖管理则确保项目可以正确地解析和使用这些依赖。...