====== archetype的制作和使用 ====== ===== 先谈谈背景 ===== 每开始一个maven项目,必做的就是配置一堆的配置文件,和pom.xml里一堆的依赖插件版本号,写一堆的controller,serivce,dao,vo,mapper等重复性的动作。为了不重复做这些事情,所以考虑做一个[[分享:技术:示例项目:springmvc_mybatis_spring_freemarker_maven|springmvc+mybatis+spring+freemarker+maven示例项目]],根据这个示例项目制作模板或者成为原型。在maven中我们使用archetype,意思解释为原型。 ===== archetype的制作 ===== 这里注意一点,被制作archetype的maven项目pom.xml必须引入maven-archetype-plugin插件 org.apache.maven.plugins maven-archetype-plugin 2.2 在做完[[分享:技术:示例项目: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,加入以下代码 ############################################## nexus-releases Nexus Release Repository http://121.43.104.34:8081/nexus/content/repositories/releases/ nexus-snapshots Nexus Snapshot Repository http://121.43.104.34:8081/nexus/content/repositories/snapshots/ ############################################## #由于nexus发布需要校验用户名和密码,所以mvn deploy要发布成功,必须在maven的目录中修改apache-maven-3.0/conf/settings.xml,注意server标签中的id与repository标签中的id要一致,用户名密码即nexus中用户名密码 ############################################## nexus-releases admin admin123 nexus-snapshots admin admin123 ############################################## mvn deploy #要生成archetype放到本地仓库.m2中同时发布到nexus私有仓库中供以后使用 上nexus私有仓库查看刚生成的record-archetype {{ :分享:技术:maven:archetype截图1.png?300 |}} ===== archetype的使用 ===== archetype的使用指的是,根据制作好的archetype来生成项目,分两种情况: - 刚制作完archetype的机器环境中,.m2文件夹下会有一个archetype-catalog.xml文件,里面会有record-archetype,使用eclipse可以搜索到该原型,可以直接创建项目 - 没有制作过archetype的机器环境中,.m2文件夹下没有archetype-catalog.xml文件,或者该文件中没有record-archetype,需要拷贝以下archetype-catalog.xml文件到.m2文件夹下或者把record-archetype的部分加到该文件中 com.gxx record-archetype 0.0.1 record-archetype http://121.43.104.34:8081/nexus/content/repositories/releases/ 接下来演示在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数据库连接,根据以下脚本创建库表 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='用户表' build项目,部署项目到tomcat,启动项目,按以下方法测试: - 访问http://localhost/mom/输出Hello World! - 访问http://localhost/mom/user/preRegistFtl.htm输入姓名和密码,第一次查看库表创建记录成功页面提示成功,第二次提示该用户名已存在 - 访问http://localhost/mom/user/preRegistJsp.htm输入姓名和密码,第一次查看库表创建记录成功页面提示成功,第二次提示该用户名已存在