这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
分享:技术:maven:archetype的制作和使用 [2015/07/07 13:00] gxx 创建 |
分享:技术:maven:archetype的制作和使用 [2017/05/30 08:53] (当前版本) gxx |
||
---|---|---|---|
行 3: | 行 3: | ||
每开始一个maven项目,必做的就是配置一堆的配置文件,和pom.xml里一堆的依赖插件版本号,写一堆的controller,serivce,dao,vo,mapper等重复性的动作。为了不重复做这些事情,所以考虑做一个[[分享:技术:示例项目:springmvc_mybatis_spring_freemarker_maven|springmvc+mybatis+spring+freemarker+maven示例项目]],根据这个示例项目制作模板或者成为原型。在maven中我们使用archetype,意思解释为原型。 | 每开始一个maven项目,必做的就是配置一堆的配置文件,和pom.xml里一堆的依赖插件版本号,写一堆的controller,serivce,dao,vo,mapper等重复性的动作。为了不重复做这些事情,所以考虑做一个[[分享:技术:示例项目:springmvc_mybatis_spring_freemarker_maven|springmvc+mybatis+spring+freemarker+maven示例项目]],根据这个示例项目制作模板或者成为原型。在maven中我们使用archetype,意思解释为原型。 | ||
===== archetype的制作 ===== | ===== archetype的制作 ===== | ||
+ | 这里注意一点,被制作archetype的maven项目pom.xml必须引入maven-archetype-plugin插件 | ||
+ | <code xml> | ||
+ | <plugins> | ||
+ | <!-- 原型插件 --> | ||
+ | <plugin> | ||
+ | <groupId>org.apache.maven.plugins</groupId> | ||
+ | <artifactId>maven-archetype-plugin</artifactId> | ||
+ | <version>2.2</version> | ||
+ | </plugin> | ||
+ | </plugins> | ||
+ | </code> | ||
+ | 在做完[[分享:技术:示例项目:springmvc_mybatis_spring_freemarker_maven|springmvc+mybatis+spring+freemarker+maven示例项目]]后,根究以下步骤来制作archetype | ||
+ | cd D:\05.HeadWorkspace\record\ #进入项目目录,dir可以看到pom.xml | ||
+ | mvn archetype:create-from-project #执行脚本 | ||
+ | ##############################################输出内容 | ||
+ | [INFO] Archetype created in D:\05.HeadWorkspace\record\target\generated-sources\ | ||
+ | archetype | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] BUILD SUCCESS | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | [INFO] Total time: 4.256s | ||
+ | [INFO] Finished at: Mon Jul 06 16:47:42 CST 2015 | ||
+ | [INFO] Final Memory: 6M/10M | ||
+ | [INFO] ------------------------------------------------------------------------ | ||
+ | ############################################## | ||
+ | cd D:\05.HeadWorkspace\record\target\generated-sources\archetype #进入archetype目录 | ||
+ | mvn install #如果只要生成archetype放到本地maven仓库.m2中,执行该脚本即可 | ||
+ | #如果要生成archetype放到本地仓库.m2中同时发布到nexus私有仓库中供以后使用,需要修改archetype目录下的pom.xml,加入以下代码 | ||
+ | ############################################## | ||
+ | <!-- 版本发布管理 --> | ||
+ | <distributionManagement> | ||
+ | <!-- release稳定版本 --> | ||
+ | <repository> | ||
+ | <id>nexus-releases</id> | ||
+ | <name>Nexus Release Repository</name> | ||
+ | <url>http://121.43.104.34:8081/nexus/content/repositories/releases/</url> | ||
+ | </repository> | ||
+ | <!-- snapshots快照版本 --> | ||
+ | <snapshotRepository> | ||
+ | <id>nexus-snapshots</id> | ||
+ | <name>Nexus Snapshot Repository</name> | ||
+ | <url>http://121.43.104.34:8081/nexus/content/repositories/snapshots/</url> | ||
+ | </snapshotRepository> | ||
+ | </distributionManagement> | ||
+ | ############################################## | ||
+ | #由于nexus发布需要校验用户名和密码,所以mvn deploy要发布成功,必须在maven的目录中修改apache-maven-3.0/conf/settings.xml,注意server标签中的id与repository标签中的id要一致,用户名密码即nexus中用户名密码 | ||
+ | ############################################## | ||
+ | <servers> | ||
+ | <server> | ||
+ | <id>nexus-releases</id> | ||
+ | <username>admin</username> | ||
+ | <password>admin123</password> | ||
+ | </server> | ||
+ | <server> | ||
+ | <id>nexus-snapshots</id> | ||
+ | <username>admin</username> | ||
+ | <password>admin123</password> | ||
+ | </server> | ||
+ | </servers> | ||
+ | ############################################## | ||
+ | mvn deploy #要生成archetype放到本地仓库.m2中同时发布到nexus私有仓库中供以后使用 | ||
+ | 上nexus私有仓库查看刚生成的record-archetype | ||
+ | {{ :分享:技术:maven:archetype截图1.png?300 |}} | ||
===== archetype的使用 ===== | ===== archetype的使用 ===== | ||
+ | archetype的使用指的是,根据制作好的archetype来生成项目,分两种情况: | ||
+ | - 刚制作完archetype的机器环境中,.m2文件夹下会有一个archetype-catalog.xml文件,里面会有record-archetype,使用eclipse可以搜索到该原型,可以直接创建项目 | ||
+ | - 没有制作过archetype的机器环境中,.m2文件夹下没有archetype-catalog.xml文件,或者该文件中没有record-archetype,需要拷贝以下archetype-catalog.xml文件到.m2文件夹下或者把record-archetype的部分加到该文件中 | ||
+ | <code xml 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 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd" | ||
+ | xmlns="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.gxx</groupId> | ||
+ | <artifactId>record-archetype</artifactId> | ||
+ | <version>0.0.1</version> | ||
+ | <description>record-archetype</description> | ||
+ | <repository>http://121.43.104.34:8081/nexus/content/repositories/releases/</repository> | ||
+ | </archetype> | ||
+ | </archetypes> | ||
+ | </archetype-catalog> | ||
+ | </code> | ||
+ | 接下来演示在eclipse中通过record-archetype创建项目 | ||
+ | {{ :分享:技术:maven:archetype截图2.png?300 |}} | ||
+ | {{ :分享:技术:maven:archetype截图3.png?300 |}} | ||
+ | {{ :分享:技术:maven:archetype截图4.png?300 |}} | ||
+ | {{ :分享:技术:maven:archetype截图5.png?300 |}} | ||
+ | 生成项目代码如下: | ||
+ | {{ :分享:技术:maven:archetype截图6.png?300 |}} | ||
+ | 全局搜索gxx修改成相应的域名,全局搜索record修改成相应的项目名,修改jdbc.properties数据库连接,根据以下脚本创建库表 | ||
+ | <code sql database.sql> | ||
+ | CREATE DATABASE mom; | ||
+ | USE mom; | ||
+ | CREATE TABLE `user` ( | ||
+ | `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', | ||
+ | `name` VARCHAR(50) NOT NULL COMMENT '姓名', | ||
+ | `password` VARCHAR(32) NOT NULL COMMENT '密码', | ||
+ | `create_date` VARCHAR(8) NOT NULL COMMENT '创建日期', | ||
+ | `create_time` VARCHAR(6) NOT NULL COMMENT '创建时间', | ||
+ | PRIMARY KEY (`id`) | ||
+ | ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户表' | ||
+ | </code> | ||
+ | build项目,部署项目到tomcat,启动项目,按以下方法测试: | ||
+ | - 访问http://localhost/mom/输出Hello World! | ||
+ | - 访问http://localhost/mom/user/preRegistFtl.htm输入姓名和密码,第一次查看库表创建记录成功页面提示成功,第二次提示该用户名已存在 | ||
+ | - 访问http://localhost/mom/user/preRegistJsp.htm输入姓名和密码,第一次查看库表创建记录成功页面提示成功,第二次提示该用户名已存在 |