- 浏览: 793616 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (651)
- Java (39)
- Java 初学者小问题 (66)
- 设计模式 (7)
- 项目管理 (3)
- 数据库 (1)
- 算法 (2)
- Java practices (6)
- Effective Java2读书笔记 (78)
- Linux (2)
- programming ruby 读书笔记 (5)
- Core Java Ninth Edition Volume I 读书笔记 (15)
- Pro Git 读书笔记 (12)
- Git (3)
- Maven in Action 读书笔记 (20)
- Web (12)
- 非技术类书籍 (11)
- 电影 (40)
- Web Cache (1)
- jquery (0)
- 历史 (4)
- Dive Into HTML5 读书笔记 (13)
- 三国演义小学毕业考 (79)
- 高效能人士的7个习惯 读书笔记 (12)
- Java Performance 读书笔记 (3)
- Protocol Buffer 学习笔记 (6)
- Mongo DB 学习笔记 (7)
- Morphia 学习笔记 (7)
- Algorithms -- Princeton 学习笔记 (13)
- String研究 (10)
- Hadoop: The Definitive Guide 读书笔记 (3)
- Java与模式读书笔记 (5)
- Date研究 (3)
- The Roman Empire 听课笔记 (4)
- Algorithms -- Standford 学习笔记 (16)
- Core Java Ninth Edition Volume II 读书笔记 (9)
- Thinking in Java 4th Edition 读书笔记 (21)
- Node : Up and Running 学习笔记 (5)
- Eloquent Javascript (8)
- Smashing Node.js 读书笔记 (1)
- Algorithms II -- Standford 学习笔记 (19)
- Algorithm II -- Princeton 学习笔记 (14)
- 网络安全 (2)
- Javascript (4)
- 正则表达式 (1)
- JAVA 7/8 (15)
- JVM (10)
- NodeJS (1)
- 鸟哥的linux私房菜读书笔记 (14)
- Web Service (1)
- The art of programming (9)
- Introduction to Algorithm 读书笔记 (4)
- Java 源码阅读 (0)
- Spring in Action 读书笔记 (2)
- Java Network Programming 读书笔记 (2)
最新评论
-
心存高远:
谢谢作者分享,刚好看到这里不太明白,现在茅塞顿开。不过runt ...
关于 Maven的传递依赖的理解 -
sxlkk:
851228082 写道甚至在某次技术会议现场遇到《Maven ...
关于 Maven的传递依赖的理解 -
851228082:
851228082 写道a----compile----b-- ...
第五章 坐标和依赖 -
851228082:
a----compile----b-----provided- ...
第五章 坐标和依赖 -
851228082:
甚至在某次技术会议现场遇到《Maven in action》的 ...
关于 Maven的传递依赖的理解
1. Archetype 是 Maven 项目的模板,它能生成项目的基本结构及 POM 文件。
2. 使用 Archetype 的一般步骤:
1) m vn archetype:generate
2) 选择要使用的 archetype 的编号(候选列表来自 archetype-catalog.xml )
3) 输入基本参数: groupId , artifactId , version , package (想要创建项目的默认 Java 包名),其他额外参数。(前四项参数是 Archetype 插件内置的)
3. 当不希望以交互方式使用 archetype 的时候可以:
mvn archetype:generate –B –DarchetypeGroupId = org.apache.maven.archetypes –DarchetypeArtifactId=maven-archetype-quickstart –DarchetypeVersion=1.0 –DgroupId=com.juvenxu.mvnbook –DartifactId=archetype-test –Dversion=1.0-SNAPSHOT –Dpackage=com.juvenxu.mvnbook
4. Maven 中央仓库的 archetype 列表:
http://repo1.maven.org/maven2/archetype-catalog.xml 。
5. maven-archetype-quickstart 是最常用的 archetype ,也是 maven-archetype-plugin 提示用户选择 archetype 的时候的默认值。它包含:
1) 包含 JUnit 依赖声明的 pom.xml
2) src/main/java 主代码目录及该目录下名为 App 的输出 ”Hello World!” 的类。
3) src/test/java 测试代码目录及该目录下名为 AppTest 的 JUnit 测试用例。
6. maven-archetype-webapp 是一个最简单的 Maven war 项目模板,它包含:
1) 一个 packaging 为 war 且带有 JUnit 依赖声明的 pom.xml
2) src/main/webapp/ 目录
3) src/main/webapp/index.jsp 文件
4) src/main/webapp/WEB-INF/web.xml 文件
7. AppFuse 是一个集成了很多开源工具的项目,它的核心就是一个项目的骨架,是包含了持久层、业务层及展现层的一个基本结构,它集成了大量流行的开源工具,如: Spring 、 Struts 2 、 JPA 、 JSF 、 Tapestry 等。 AppFuse 提供了大量 archetype ,针对各种展现层框架分别为:
1) appfuse-*-jsf :基于 JSF 的 Archetype 。
2) appfuse-*-spring :基本 Spring MVC 的 Archetype 。
3) appfuse-*-struts :基本 Struts 2 的 Archetype 。
4) appfuse-*-tapestry :基本 Tapestry 的 Archetype 。
每一种展现层框架都有 3 个 Archetype ,分别为 light 、 basic 和 modular 。 light 包含最简单的骨架, basic 则包含了一些用户管理及安全方面的特性, modular 会生成多模块项目,其中的 core 模块包含了持久层及业务层代码, web 模块包含了展现层代码。
8. 关于 AppFuse Archetype 的具体信息可以参考:
http://appfuse.org/display/apf/appfuse+quickstart 。
9. 要编写一个自己的 Archetype ,需要创建一个 Archetype Maven 项目,包含如下部分:
1) pom.xml : Archetype 自身的 POM
2) src/main/resources/archetype-resources/pom.xml :基于该 Archetype 生成的项目的 POM 原型
3) src/main/resources/META-INF/maven/archetype-metadata.xml : Archetype 的描述符文件。
4) src/main/resources/archetype-resources/** :其他需要包含在 Archetype 中的内容。
10. 虽然 Archetype 是一种特殊的 Maven 项目,但 maven-archetype-plugin 并没有要求 Archetype 项目使用特殊的打包类型,一般为 jar 。 Archetype 项目的 POM 也没有什么特别之处,只需要的声明项目基本信息就行了。
11. 在 POM 原型中,可以使用可配置的属性,如 ${groupId} 、 ${artifactId} 、 ${version} 、 ${package} 是内置的四个属性。
12. Archetype 描述符文件是 Archetype 最核心的部分,它主要描述两件事:
1) 声明哪些目录及文件应该包含在 Archetype 文件中( <fileSets> )
2) Archetype 使用哪些属性参数( <requiredProperties> )
13. 一个 Archetype 描述符文件的例子:
<?xml version=”1.0” encoding=”UTF-8”?> <archetype-descriptor name=”sample”> <fileSets> <fileSet filtered=”true” packaged=”true”> <directory>src/main/java</directory> <includes> <include>**/*.java</include> </include> </fileSet> <fileSet filtered=”true” packaged=”true”> <directory>src/test/java</directory> <includes> <include>**/*.java</include> </include> </fileSet> <fileSet filtered=”true” packaged=”false”> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> </include> </fileSet> <requiredProperties> <requiredProperty key=”port”/> <requiredProperty key=”groupId” > <defaultValue>com.juvenxu.mvnbook</defaultValue> </requiredProperty> </requiredProperties> </archetype-descriptor>
fileSet 定义了要被放入生成项目中的文件。 directory 指定的目录是相对于 Archetype 项目的 src/main/resources/archetype-resources 目录的相对路径。 Filtered 表示该文件集中的文件是否应用属性替换。而 packaged 表示是否将目录下的内容放到生成项目的包路径下。如果 package (生成项目时用户必须输入的参数)值为 com.juvenxu.mvnbook ,则所有 src/main/resources/archetype-resources/src/main/java 下的 .java 文件夹会被放到生成项目的 src/main/java/com/juvenxu/mvnbook 下。而 requiredProperty 表示了 Archetype 要求的额外参数。
14. 将 Archetype 项目 mvn clean install 后就可以用 maven-archetype-plugin:generate 使用它了。
15. 当用户以不指定 Archetype 坐标的方式使用 maven-archetype-plugin 的时候,会得到一个 Archetype 列表供选择,这个列表来源于一个名为 archetype-catalog.xml 的文件,比如:
<?xml version=”1.0” encoding=”UTF-8”?> <archetype-catalog xsi:schemaLocation=http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance > <archetypes> <archetype> <groupId>com.juvenxu.mvnbook.archetypes</groupId> <artifactId>mvnbook-archetype-sample</artifactId> <version>1.0-SNAPSHOT</version> <description>sample</description> </archetype> <archetype> <groupId>com.juvenxu.mvnbook.archetypes</groupId> <artifactId>mvnbook-archetype-quickstart</artifactId> <version>1.0 </version> <description>quickstart</description> </archetype> </archetypes> </archetype-catalog>
16. maven-archetype-plugin 可以从以下位置读取 archetype-catalog.xml 文件:
1) internal : maven-archetype-plugin 内置的 Archetype Catalog 。
2) local :~ /.m2/archetype-catalog.xml
3) remote : http://repo1.maven.org/maven2/archetype-Catalog.xml 。
4) file://... :用户可以指定本机任何位置的 archetype-catalog.xml 文件
5) http://... :用户可以指定远程任何位置的 archetype-catalog.xml 文件
当用户运行 mvn archetype:generate 命令的时候,可以使用 archetypeCatalog 参数指定插件使用的 Catalog ,可以用逗号分隔多个来源。 2.0-beta-4 之前,默认为 ”internal, local” ,之后,默认为 ”remote,local” 。
17. maven-archetype-plugin:crawl 可以遍历本地的 Maven 仓库的内容,生成 archetype-catalog.xml 文件。默认 crawl 会遍历用户 settings.xml 中定义的 localRepository ,可以使用 repository 参数自己指定仓库路径,也可以使用 catalog 参数指定要更新的 catalog 文件。
18. nexus-archetype-plugin 插件能够基于 Nexus 仓库索引实时生成 archetype-catalog.xml 文件。用户可以在
下载该插件。将 bundle.zip 解压到 Nexus 工作目录 sonatype-work/nexus/ 下的 plugin-repository/ 子目录中,然后重启 Nexus 就完成了安装。当用户浏览 Nexus 仓库内容时,就能在仓库的根目录下下载 archetype-catalog.xml 文件。
发表评论
-
关于 Maven的传递依赖的理解
2012-09-30 09:50 13980今天又回顾了一下 《Maven in Action》的读书笔记 ... -
《Maven in Action》读后感
2012-02-23 23:48 2207今天终于读完了《Maven in Action》一书,真所谓书 ... -
第十七章 编写Maven插件
2012-02-23 19:42 44881. 编写 Maven 插件的主要步骤 ... -
第十六章 m2eclipse
2012-02-23 15:44 23741. m2eclipse ( http: ... -
第十五章 生成项目站点
2012-02-21 09:27 22841. Maven 社区提供了大量插件,能让用户 ... -
第十四章 灵活的构建
2012-02-20 16:21 18671. 通过 <propertie ... -
第十三章 版本管理
2012-02-20 15:57 21161. 版本管理( Version Manage ... -
第十二章 使用Maven构建Web应用
2012-02-15 18:38 60381. Web 项目的 POM ... -
第十一章 使用Hudson进行持续集成
2012-02-09 17:09 23091. 持续集成就是快速 且高频率 ... -
第十章 使用Maven进行测试
2012-02-05 22:17 214001. com.google.code. ... -
第九章 使用Nexus创建私服
2011-12-06 23:17 107911. Nexus 分为开源版和企业版,开源 ... -
第八章 聚合与继承
2011-12-06 09:55 20451. 为了能用一条命令来构建一个实际 ... -
第七章 生命周期和插件
2011-12-05 13:36 23021. Maven 的生命周期就是为了对所有的构 ... -
第六章 仓库
2011-12-03 18:44 24051. Maven 在一个工作站上的某个位置统一 ... -
第五章 坐标和依赖
2011-12-03 15:14 20791. Maven 定义了这样一组规则:世界上任 ... -
第四章 背景案例
2011-12-02 21:20 14171. 主要场景: 1) 用户访问注册页面 2) ... -
第三章 Maven 使用入门
2011-12-01 18:40 25451. 就像Make的Makefile, Ant的build. ... -
第二章 Maven的安装和配置
2011-12-01 10:01 62331. 设置JAVA_HOME, Path中加入%JAVA_H ... -
第一章 Maven 简介
2011-12-01 09:48 22871. Maven 是优秀的构建工 ...
相关推荐
第1章 maven简介1.1 何为maven1.1.1 何为构建1.1.2 maven是优秀的构建工具1.1.3 maven不仅仅是构建工具1.2 为什么...灵活的构建第15章 生成项目站点第16章 m2eclipse第17章 编写maven插件第18章 archetype
7. **第17~18章:扩展Maven** - **目标**: 针对希望深入定制Maven行为的用户。 - **内容**: 如何编写自定义的Maven插件、创建Archetype模板等。 #### 书籍价值 - **全面覆盖**: 从Maven的基础知识到高级应用,...
- **第17~18章:插件开发** 针对需要编写Maven插件或自定义项目骨架的高级用户,介绍了如何开发Archeype和Maven插件。 #### 四、Maven实战的实际应用 1. **项目初始化**:通过使用Maven的Archetype功能,可以...
本资源主要讲解软件工程中的架构设计(Architectural Design),是软件工程英文教学课件的第九章。下面是对该资源的详细知识点总结: 一、什么是架构(What Is Architecture?) 架构是指软件系统或程序的结构,它...
下载本章的例子 3.2. 创建一个简单的项目 3.3. 构建一个简单的项目 3.4. 简单的项目对象模型 (Project Object Model) 3.5. 核心概念 3.5.1. Maven插件和目标 (Plugins and Goals) 3.5.2. Maven生命周期 ...