Maven快速上手

来源:互联网 发布:淘宝收货人搞笑名字 编辑:程序博客网 时间:2024/04/30 10:42


1 首先看一下Maven3的基本知识

[java] view plaincopyprint?
  1. /** 
  2.  * @see ================================================================================================================================ 
  3.  * @see 安装Maven3 
  4.  * @see 1、解压缩到apache-maven-3.0.3-bin.zip到硬盘目录中,比如D:\\Develop\\apache-maven-3.0.3\\ 
  5.  * @see 2、设置环境变量M2_HOME=D:\Develop\apache-maven-3.0.3和Path=%M2_HOME%\bin; 
  6.  * @see 3、Win+R-->cmd-->mvn -v-->打印Apache Maven 3.0.3等信息即表示安装成功 
  7.  * @see ================================================================================================================================ 
  8.  * @see 配置Maven3 
  9.  * @see 1、修改\\MAVEN_HOME\\conf\\settings.xml第53行<localRepository>D:/Develop/MyMaven</localRepository> 
  10.  * @see 2、上面的修改用于指定本地仓库目录,接下来将修改后的settings.xml拷贝到D:\\Develop\\MyMaven\\目录中 
  11.  * @see 3、定位到MyEclipse6.5.0GA-->Window-->Preferences-->MyEclipse Enterprise Workbench-->Maven4MyEclipse 
  12.  * @see 4、Maven4MyEclipse-->Installations-->Add-->选择至D:\\Develop\\apache-maven-3.0.3\\目录-->勾选之-->Apply 
  13.  * @see 5、Maven4MyEclipse-->User Settings File-->Browse-->D:\\Develop\\MyMaven\\settings.xml-->Refresh Settings 
  14.  * @see 6、Maven4MyEclipse-->Maven JDK-->要选择我们本机JDK。。并且取消勾选Download repository index updates on startup选项 
  15.  * @see ================================================================================================================================ 
  16.  * @see 建立Maven工程 
  17.  * @see 1、MyEclipse6.5GA-->右键-->New-->Project-->Java Maven Project-->输入相关(这里可以随便输入,不要紧的)信息-->Finish 
  18.  * @see 2、接下来一个典型的Maven工程就创建后了,其核心就是pom.xml文件。。。。。。我们会在后面主要介绍POM文件的,在这之前先带领大家预热一番 
  19.  * @see ================================================================================================================================ 
  20.  * @see 预热Maven 
  21.  * @see 1、通常习惯将源代码放置到/src/main/java/中......源代码的资源文件放置到/src/main/resources/中 
  22.  * @see    通常习惯测试代码放置到/src/test/java/中......测试代码资源文件放置到/src/test/resources/中 
  23.  * @see 2、mvn clean              -->运行清理操作。默认会清理target文件夹中的数据 
  24.  * @see    mvn clean compile      -->先运行清理,之后运行编译操作。默认会将代码编译到target文件夹中 
  25.  * @see    mvn clean test         -->运行清理和测试操作 
  26.  * @see    mvn clean package      -->运行清理和打包操作。包的名称就是项目模块名称加版本名称 
  27.  * @see    mvn clean install      -->运行清理和安装。所谓安装,就是将打好的包安装到本地仓库中,以便被其它项目调用 
  28.  * @see    mvn clean deploy       -->运行清理和发布。它会将其发布到私服上 
  29.  * @see    mvn archetype:generate -->Maven有一些固定的生成模式,其中使用该可以自动完成骨架的建立 
  30.  * @see 3、依赖包的查询 
  31.  * @see    1)所有的依赖都是通过坐标进行存储的(GAV--groupId,artifactId,version) 
  32.  * @see    2)有一些网上的仓库提供了坐标的查询(http://search.maven.org/或者http://mvnrepository.com/) 
  33.  * @see    3)maven搜索依赖包的顺序:本地仓库-->私服-->中央仓库 
  34.  * @see 4、版本管理(总版本号.分支版本号.小版本号-里程碑版本) 
  35.  * @see    总版本号:一般表示框架的变动。如Struts1和Struts2,jBPM3和jBPM4 
  36.  * @see    分支版本:一般表示增加了一些功能 
  37.  * @see    小版本号:一般表示在分支版本上的BUG修复 
  38.  * @see    里程碑版:SNAPSHOT-->Alpha-->Beta-->Release-->GA 
  39.  * @see            SNAPSHOT-->即快照版本,也就是开发中的版本,是最不安全的版本 
  40.  * @see               Alpha-->内部的测试版本 
  41.  * @see                Beta-->外部的公测版本 
  42.  * @see             Release-->已通过测试,并初步稳定,也叫RC版本 
  43.  * @see                  GA-->稳定版本,此时就可以投入市场了 
  44.  * @see ================================================================================================================================ 
  45.  * @see Nexus的安装 
  46.  * @see 1)下载nexus-2.0.3-bundle.zip并解压缩(在其主页http://www.sonatype.org/点击'DOWNLOAD NEXUS'绿色大按钮) 
  47.  * @see 2)将该值%NEXUS_HOME%\bin加入环境变量(NEXUS_HOME=D:\\Develop\\nexus-2.0.3-bundle\\nexus-2.0.3) 
  48.  * @see 3)将nexus安装到windows的服务中(Win+R---cmd---nuxus install) 
  49.  * @see 4)修改%NEXUS_HOME%\bin\jsw\conf\wrapper.conf第15行为wrapper.java.command=D:\Develop\Java\jdk1.6.0_30\bin\java 
  50.  * @see 5)启动nexus服务(Win+R---cmd---nuxus start(出现'wrapper | nexus started.'表示启动成功)) 
  51.  * @see   也可以在服务面板中启动nexus服务(Win+R---services.msc即可打开服务面板) 
  52.  * @see 6)使用admin@admin123登录http://127.0.0.1:8081/nexus(nexus默认发布在jetty中,且jetty默认端口为8081) 
  53.  * @see   nexus有两个版本,一个是war版本(即发布版本,可以发布到tomcat等web容器中),一个是zip版本(它自带了jetty服务器) 
  54.  * @see ================================================================================================================================ 
  55.  * @see Nexus的仓库类型(由于Nexus提供可视化界面,故其用法略,大家随意点点就能明白大致用途) 
  56.  * @see virtual:针对Maven1.x的转接仓库,由于我们用的是Maven3.0.5,故该仓库对我们没啥用 
  57.  * @see  hosted:内部项目的发布仓库 
  58.  * @see          Releases仓库表示内部模块中release模块的发布仓库 
  59.  * @see          Snapshots仓库作用与Releases相同 
  60.  * @see          3rd party仓库表示第三方依赖的仓库,这个数据通常是由内部人员自行下载后发布上去的 
  61.  * @see   proxy:代理仓库。即从远程中央仓库中寻找数据的仓库 
  62.  * @see          Apache Snapshots仓库是从Apache网站寻找快照版本的仓库 
  63.  * @see          Central仓库即中央仓库,它访问的地址是在下面Configuration中Remote Storage Location值决定的 
  64.  * @see          Codehaus Snapshots仓库从Codehaus开源组织中寻找快照版本的仓库 
  65.  * @see   group:组仓库。用来方便开发人员进行设置的仓库 
  66.  * @see ================================================================================================================================ 
  67.  * @see Nexus的索引更新 
  68.  * @see 1)下载http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.zip 
  69.  * @see 2)停止nexus服务(在cmd窗口使用nexus stop或者在服务面板中右键stop nexux服务) 
  70.  * @see 3)删除%NEXUS_HOME%\sonatype-work\nexus\indexer\central-ctx\文件夹中的全部文件 
  71.  * @see 4)将nexus-maven-repository-index.zip解压后的文件放到%NEXUS_HOME%\sonatype-work\nexus\indexer\central-ctx\文件夹中 
  72.  * @see 5)重启nexus即自动更新索引 
  73.  * @see ================================================================================================================================ 
  74.  */  

下面,我们在MyEclipse6.5GA中新建一个Maven工程


首先是Maven的核心文件pom.xml

[html] view plaincopyprint?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <!-- 当前POM模型的版本:目前其值只能是固定的4.0.0 -->  
  4.     <modelVersion>4.0.0</modelVersion>  
  5.   
  6.     <!-- 这三个属性:groupId、artifactId、version称为项目的坐标 -->  
  7.     <!-- 项目的名称 -->  
  8.     <groupId>com.jadyer.blog</groupId>  
  9.     <!-- 项目的模块名称。建议用"项目名称-模块名称"。按照Maven的约定,此时Java类的包名就应该是com.jadyer.blog.dao -->  
  10.     <!-- 即通常项目中Java类包都应该基于项目的groupId和artifactId。虽然这不是必须的,但这些显然更加清晰、更加符合逻辑 -->  
  11.     <artifactId>blog-dao</artifactId>  
  12.     <!-- 项目的版本名称 -->  
  13.     <version>0.0.1.Release</version>  
  14.     <!-- 打包类型:默认为jar -->  
  15.     <packaging>jar</packaging>  
  16.     <!-- 用于声明一个对于用户而言更为友好的项目名称 -->  
  17.     <name>玄玉的手工博客系统之DAO模块</name>  
  18.       
  19.     <url>http://maven.apache.org</url>  
  20.   
  21.     <properties>  
  22.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  23.         <junit.version>4.10</junit.version>  
  24.         <hibernate.version>3.6.10.Final</hibernate.version>  
  25.         <javassist.version>3.12.1.GA</javassist.version>  
  26.         <slf4j-simple.version>1.6.4</slf4j-simple.version>  
  27.         <mysql.driver.version>5.1.18</mysql.driver.version>  
  28.         <maven-source-plugin.version>2.1.2</maven-source-plugin.version>  
  29.         <maven-rar-plugin.version>2.2</maven-rar-plugin.version>  
  30.         <maven-shade-plugin.version>1.6</maven-shade-plugin.version>  
  31.         <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version>  
  32.         <maven-surefire-plugin.version>2.14.1</maven-surefire-plugin.version>  
  33.         <sql-maven-plugin.version>1.5</sql-maven-plugin.version>  
  34.         <mysql.driver>com.mysql.jdbc.Driver</mysql.driver>  
  35.         <mysql.url>jdbc:mysql://127.0.0.1:3306/jadyer?characterEncoding=UTF-8</mysql.url>  
  36.         <mysql.username>root</mysql.username>  
  37.         <mysql.password>hongyu</mysql.password>  
  38.     </properties>  
  39.   
  40.     <!-- 自动加入的依赖包,它们是通过项目坐标来找到依赖包的。所以用了maven之后就不需要再拷jar包了 -->  
  41.     <dependencies>  
  42.         <dependency>  
  43.             <groupId>junit</groupId>  
  44.             <artifactId>junit</artifactId>  
  45.             <version>${junit.version}</version>  
  46.             <!-- 依赖的范围:默认为compile -->  
  47.             <!--     test:测试范围有效。即编译和打包时不会加入该依赖包 -->  
  48.             <!--  compile:编译范围有效。即编译和打包时会将该依赖包一并加入 -->  
  49.             <!-- provided:编译和测试时有效,最后生成war包时不会加入该依赖包。比如web容器本身已包含的servlet-api.jar,再打包则会冲突 -->  
  50.             <!--  runtime:运行范围有效,编译时则不依赖 -->  
  51.             <scope>test</scope>  
  52.         </dependency>  
  53.         <dependency>  
  54.             <groupId>org.hibernate</groupId>  
  55.             <artifactId>hibernate-core</artifactId>  
  56.             <version>${hibernate.version}</version>  
  57.         </dependency>  
  58.         <dependency>  
  59.             <groupId>javassist</groupId>  
  60.             <artifactId>javassist</artifactId>  
  61.             <version>${javassist.version}</version>  
  62.         </dependency>  
  63.         <dependency>  
  64.             <groupId>org.slf4j</groupId>  
  65.             <artifactId>slf4j-simple</artifactId>  
  66.             <version>${slf4j-simple.version}</version>  
  67.         </dependency>  
  68.         <dependency>  
  69.             <groupId>mysql</groupId>  
  70.             <artifactId>mysql-connector-java</artifactId>  
  71.             <version>${mysql.driver.version}</version>  
  72.         </dependency>  
  73.     </dependencies>  
  74.   
  75.     <build>  
  76.         <plugins>  
  77.             <!-- maven-source-plugin插件:打包项目源码 -->  
  78.             <!-- Run As Maven build : clean package -->  
  79.             <plugin>  
  80.                 <groupId>org.apache.maven.plugins</groupId>  
  81.                 <artifactId>maven-source-plugin</artifactId>  
  82.                 <version>${maven-source-plugin.version}</version>  
  83.                 <executions>  
  84.                     <execution>  
  85.                         <!-- 绑定在哪个周期。这里设定为package后绑定,即package后再运行maven-source-plugin插件 -->  
  86.                         <!-- 注:maven生命周期中,package阶段负责接受编译好的代码并打包成可发布的格式,如JAR -->  
  87.                         <phase>package</phase>  
  88.                         <!-- 所要运行maven-source-plugin插件的目标 -->  
  89.                         <goals>  
  90.                             <goal>jar-no-fork</goal>  
  91.                         </goals>  
  92.                     </execution>  
  93.                 </executions>  
  94.             </plugin>  
  95.             <!-- 将之打成rar压缩包 -->  
  96.             <!-- Run As Maven build : clean package -->  
  97.             <plugin>  
  98.                 <groupId>org.apache.maven.plugins</groupId>  
  99.                 <artifactId>maven-rar-plugin</artifactId>  
  100.                 <version>${maven-rar-plugin.version}</version>  
  101.                 <executions>  
  102.                     <execution>  
  103.                         <phase>package</phase>  
  104.                         <goals>  
  105.                             <goal>rar</goal>  
  106.                         </goals>  
  107.                     </execution>  
  108.                 </executions>  
  109.             </plugin>  
  110.             <!-- 默认打包生成的jar是不能够直接运行的,因为带有main()方法的类信息不会被添加到manifest中 -->  
  111.             <!-- 为了生成可执行的jar文件,我们需要借助maven-shade-plugin插件,其配置信息如下 -->  
  112.             <!-- Run As Maven build : clean package -->  
  113.             <plugin>  
  114.                 <groupId>org.apache.maven.plugins</groupId>  
  115.                 <artifactId>maven-shade-plugin</artifactId>  
  116.                 <version>${maven-shade-plugin.version}</version>  
  117.                 <executions>  
  118.                     <execution>  
  119.                         <phase>package</phase>  
  120.                         <goals>  
  121.                             <goal>shade</goal>  
  122.                         </goals>  
  123.                         <configuration>  
  124.                             <transformers>  
  125.                                 <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  
  126.                                     <!-- 配置<mainClass>为带有main()方法类。如此,项目在打包时就会将该信息放到/META-INF/MANIFEST.MF文件中 -->  
  127.                                     <!-- 构建完成后target目录会发现blog-dao-0.0.1.Release.jar和original-blog-dao-0.0.1.Release.jar -->  
  128.                                     <!-- 前者是带有Main-Class信息的可运行的jar,后者是原始的jar。然后我们到CMD窗口中切换到项目根目录中执行该jar -->  
  129.                                     <!-- D:\Develop\MyWorkspace\MavenStudy>java -jar target\blog-dao-0.0.1.Release.jar -->  
  130.                                     <mainClass>com.jadyer.util.ManiFestTest</mainClass>  
  131.                                 </transformer>  
  132.                             </transformers>  
  133.                         </configuration>  
  134.                     </execution>  
  135.                 </executions>  
  136.             </plugin>  
  137.             <!-- 指明源码编译级别 -->  
  138.             <plugin>  
  139.                 <groupId>org.apache.maven.plugins</groupId>  
  140.                 <artifactId>maven-compiler-plugin</artifactId>  
  141.                 <version>${maven-compiler-plugin.version}</version>  
  142.                 <configuration>  
  143.                     <source>1.6</source>  
  144.                     <target>1.6</target>  
  145.                 </configuration>  
  146.             </plugin>  
  147.             <!-- 指明测试类的运行情况 -->  
  148.             <!-- Run As Maven build : clean package -->  
  149.             <!-- 可能是由于历史的原因,Maven2/3中用于执行测试的插件不是maven-test-plugin,而是maven-surefire-plugin -->  
  150.             <!-- 如果没有使用该插件,Maven默认会执行符合约定格式的测试类(即以Test开头或结尾、或者以TestCase结尾的Java类) -->  
  151.             <!-- 然而我们想跳过测试,或者排除某些测试类,或者使用一些TestNG特性的时候,该插件就很有必要了 -->  
  152.             <!-- 也可以执行Run As Maven build : clean package -Dtest=FooTest,其效果是仅运行FooTest测试类 -->  
  153.             <plugin>  
  154.                 <groupId>org.apache.maven.plugins</groupId>  
  155.                 <artifactId>maven-surefire-plugin</artifactId>  
  156.                 <version>${maven-surefire-plugin.version}</version>  
  157.                 <configuration>  
  158.                     <!-- 设置包含的测试类 -->  
  159.                     <includes>  
  160.                         <include>**/MyTest*</include>  
  161.                     </includes>  
  162.                     <!-- 设置不进行测试的类 -->  
  163.                     <excludes>  
  164.                         <exclude>Test*</exclude>  
  165.                     </excludes>  
  166.                     <!-- 跳过测试阶段,并且也不会编译测试类。若仅仅想跳过测试并编译测试类,则可用<skipTests>标签 -->  
  167.                     <!-- <skip>true</skip> -->  
  168.                 </configuration>  
  169.             </plugin>  
  170.             <!-- 生成测试报告(我们可以在生成的报告中轻松查看测试覆盖率等等) -->  
  171.             <plugin>  
  172.                 <groupId>org.codehaus.mojo</groupId>  
  173.                 <artifactId>cobertura-maven-plugin</artifactId>  
  174.                 <configuration>  
  175.                     <formats>  
  176.                         <format>html</format>  
  177.                         <format>xml</format>  
  178.                     </formats>  
  179.                 </configuration>  
  180.                 <executions>  
  181.                     <execution>  
  182.                         <id>cobertura-report</id>  
  183.                         <!-- 测试完成后就生成测试报告 -->  
  184.                         <phase>test</phase>  
  185.                         <goals>  
  186.                             <goal>cobertura</goal>  
  187.                         </goals>  
  188.                     </execution>  
  189.                 </executions>  
  190.             </plugin>  
  191.             <!-- 通过Maven来执行配置好的数据库脚本。可以在POM中配置sql命令,或将脚本写在文件中并在POM中配置文件位置 -->  
  192.             <!-- 最后,在CMD窗口中运行mvn sql:execute以执行所有脚本,或者在MyEclipse中Run As Maven build:clean package -->  
  193.             <plugin>  
  194.                 <groupId>org.codehaus.mojo</groupId>  
  195.                 <artifactId>sql-maven-plugin</artifactId>  
  196.                 <version>${sql-maven-plugin.version}</version>  
  197.                 <!-- 这是针对该插件的依赖包 -->  
  198.                 <dependencies>  
  199.                     <dependency>  
  200.                         <groupId>mysql</groupId>  
  201.                         <artifactId>mysql-connector-java</artifactId>  
  202.                         <version>${mysql.driver.version}</version>  
  203.                     </dependency>  
  204.                 </dependencies>  
  205.                 <configuration>  
  206.                     <driver>${mysql.driver}</driver>  
  207.                     <url>${mysql.url}</url>  
  208.                     <username>${mysql.username}</username>  
  209.                     <password>${mysql.password}</password>  
  210.                     <!-- 该插件连接数据库成功后,所要运行的命令 -->  
  211.                     <sqlCommand>create database IF NOT EXISTS jadyer_maven</sqlCommand>  
  212.                 </configuration>  
  213.                 <executions>  
  214.                     <execution>  
  215.                         <phase>package</phase>  
  216.                         <goals>  
  217.                             <goal>execute</goal>  
  218.                         </goals>  
  219.                     </execution>  
  220.                 </executions>  
  221.             </plugin>  
  222.         </plugins>  
  223.     </build>  
  224. </project>  

下面是位于//src//main//java//中的实体类User.java

[java] view plaincopyprint?
  1. package com.jadyer.model;  
  2.   
  3. import javax.persistence.Entity;  
  4. import javax.persistence.GeneratedValue;  
  5. import javax.persistence.Id;  
  6. import javax.persistence.Table;  
  7.   
  8. @Entity  
  9. @Table(name="t_user")  
  10. public class User {  
  11.     private int id;  
  12.     private String username;  
  13.     private String nickname;  
  14.     private String password;  
  15.     private String email;  
  16.       
  17.     @Id  
  18.     @GeneratedValue  
  19.     public int getId() {  
  20.         return id;  
  21.     }  
  22.     public void setId(int id) {  
  23.         this.id = id;  
  24.     }  
  25.     public String getUsername() {  
  26.         return username;  
  27.     }  
  28.     public void setUsername(String username) {  
  29.         this.username = username;  
  30.     }  
  31.     public String getNickname() {  
  32.         return nickname;  
  33.     }  
  34.     public void setNickname(String nickname) {  
  35.         this.nickname = nickname;  
  36.     }  
  37.     public String getPassword() {  
  38.         return password;  
  39.     }  
  40.     public void setPassword(String password) {  
  41.         this.password = password;  
  42.     }  
  43.     public String getEmail() {  
  44.         return email;  
  45.     }  
  46.     public void setEmail(String email) {  
  47.         this.email = email;  
  48.     }  
  49. }  

下面是位于//src//main//java//中的自定义工具类HibernateUtil.java

[java] view plaincopyprint?
  1. package com.jadyer.util;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.hibernate.SessionFactory;  
  5. import org.hibernate.cfg.Configuration;  
  6.   
  7. public class HibernateUtil {  
  8.     private static SessionFactory factory = null;  
  9.       
  10.     static{  
  11.         factory = new Configuration().configure().buildSessionFactory();  
  12.     }  
  13.       
  14.     public static Session getCurrentSession(){  
  15.         return factory.getCurrentSession();  
  16.     }  
  17. }  

下面是位于//src//main//resources//中的Hibernate配置文件hibernate.cfg.xml

[html] view plaincopyprint?
  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  4. <hibernate-configuration>  
  5.     <session-factory>  
  6.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  7.         <property name="connection.url">jdbc:mysql://127.0.0.1:3306/jadyer?characterEncoding=UTF-8</property>  
  8.         <property name="connection.username">root</property>  
  9.         <property name="connection.password">hongyu</property>  
  10.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  11.         <property name="show_sql">true</property>  
  12.         <property name="format_sql">true</property>  
  13.         <property name="hbm2ddl.auto">update</property>  
  14.         <property name="current_session_context_class">thread</property>  
  15.         <mapping class="com.jadyer.model.User"/>  
  16.     </session-factory>  
  17. </hibernate-configuration>  

最后是位于//src//test//java//中的JUnit测试用例UserTest.java

[java] view plaincopyprint?
  1. package com.jadyer.test;  
  2.   
  3. import org.hibernate.Session;  
  4. import org.junit.Assert;  
  5. import org.junit.Test;  
  6.   
  7. import com.jadyer.model.User;  
  8. import com.jadyer.util.HibernateUtil;  
  9.   
  10. public class UserTest {  
  11.     @Test  
  12.     public void addUser(){  
  13.         Session session = HibernateUtil.getCurrentSession();  
  14.         session.beginTransaction();  
  15.         User uu = new User();  
  16.         uu.setUsername("张起灵");  
  17.         uu.setNickname("闷油瓶");  
  18.         uu.setPassword("02200059");  
  19.         uu.setEmail("qiling@yeah.net");  
  20.         session.save(uu);  
  21.         session.getTransaction().commit();  
  22.         Assert.assertTrue(uu.getId() > 0);  
  23.     }  
  24.       
  25.     @Test  
  26.     public void loadUser(){  
  27.         Session session = HibernateUtil.getCurrentSession();  
  28.         session.beginTransaction();  
  29.         User uu = (User)session.load(User.class2);  
  30.         session.getTransaction().commit();  
  31.         Assert.assertEquals(2, uu.getId());  
  32.     }  
  33. }  

2  使用Maven3管理和发布Web项目


这是Maven3的核心文件pom.xml

[html] view plaincopyprint?
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
  3.     <modelVersion>4.0.0</modelVersion>  
  4.   
  5.     <groupId>com.jadyer.blog</groupId>  
  6.     <artifactId>blog-servlet</artifactId>  
  7.     <version>0.0.1.Release</version>  
  8.     <!-- 注意这里为war -->  
  9.     <packaging>war</packaging>  
  10.     <name>玄玉的手工博客系统之Servlet模块</name>  
  11.       
  12.     <url>http://maven.apache.org</url>  
  13.   
  14.     <properties>  
  15.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  16.         <junit.version>4.10</junit.version>  
  17.         <javax.servlet-api.version>3.0.1</javax.servlet-api.version>  
  18.         <javax.servlet.jsp-api.version>2.2.1</javax.servlet.jsp-api.version>  
  19.         <maven-war-plugin.version>2.2</maven-war-plugin.version>  
  20.     </properties>  
  21.   
  22.     <dependencies>  
  23.         <dependency>  
  24.             <groupId>junit</groupId>  
  25.             <artifactId>junit</artifactId>  
  26.             <version>${junit.version}</version>  
  27.             <scope>test</scope>  
  28.         </dependency>  
  29.         <dependency>  
  30.             <groupId>javax.servlet</groupId>  
  31.             <artifactId>javax.servlet-api</artifactId>  
  32.             <version>${javax.servlet-api.version}</version>  
  33.             <scope>provided</scope>  
  34.         </dependency>  
  35.         <dependency>  
  36.             <groupId>javax.servlet.jsp</groupId>  
  37.             <artifactId>javax.servlet.jsp-api</artifactId>  
  38.             <version>${javax.servlet.jsp-api.version}</version>  
  39.             <scope>provided</scope>  
  40.         </dependency>  
  41.     </dependencies>  
  42.       
  43.     <build>  
  44.         <!-- 下面,以aa代指生成的target下Web应用的文件夹名称,以bb代指发布到\tomcat\webapps\目录下的文件名称 -->  
  45.         <!-- 1、aa以<finalName>值为准,并且无视<warName>值。若未指定<finalName>值,则默认为'artifactId-version' -->  
  46.         <!-- 2、bb以<warName>值为优先。若未指定<warName>值,则以<finalName>值为准。若二者均未指定,则默认为'artifactId-version' -->  
  47.         <finalName>myBlogServlet</finalName>  
  48.         <plugins>  
  49.             <plugin>  
  50.                 <groupId>org.apache.maven.plugins</groupId>  
  51.                 <artifactId>maven-war-plugin</artifactId>  
  52.                 <version>${maven-war-plugin.version}</version>  
  53.                 <configuration>  
  54.                     <!-- Run As Maven build : clean package 就可以发布到tomcat下了,并按照<warName>命名 -->  
  55.                     <!-- 访问应用时,访问该地址即可:http://IP:Port/warName/ -->  
  56.                     <warName>MyMavenStudyWebWarFile</warName>  
  57.                     <outputDirectory>D:\Develop\apache-tomcat-6.0.35\webapps</outputDirectory>  
  58.                 </configuration>  
  59.             </plugin>  
  60.         </plugins>  
  61.     </build>  
  62. </project>  

下面是位于//src//main//java//中的普通Servlet----HomeServlet.java

[java] view plaincopyprint?
  1. package com.jadyer.servlet;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class HomeServlet extends HttpServlet {  
  11.     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  12.         this.doPost(request, response);  
  13.     }  
  14.   
  15.     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  16.         request.setAttribute("YouName""吴三省");  
  17.         request.getRequestDispatcher("/jadyer.jsp").forward(request, response);  
  18.     }  
  19. }  

然后在//src//main//下手工建立//webapp//和//webapp//WEB-INF//目录


下面是位于//src//main//webapp//WEB-INF//目录中的web.xml

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.     <servlet>  
  7.         <servlet-name>HomeServlet</servlet-name>  
  8.         <servlet-class>com.jadyer.servlet.HomeServlet</servlet-class>  
  9.     </servlet>  
  10.     <servlet-mapping>  
  11.         <servlet-name>HomeServlet</servlet-name>  
  12.         <url-pattern>/servlet/HomeServlet</url-pattern>  
  13.     </servlet-mapping>  
  14.       
  15.     <welcome-file-list>  
  16.         <welcome-file>servlet/HomeServlet</welcome-file>  
  17.     </welcome-file-list>  
  18. </web-app>  

最后是位于//src//main//webapp//目录中的jadyer.jsp

[html] view plaincopyprint?
  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <h2>欢迎:${YouName}</h2>  

3 使用搭建Nexus搭建私服

      1  Maven及Nexus私服搭建 【带图片】
    
      2   Maven+Nexus私服搭建【linux下】
   
      3  使用Nexus搭建Maven私服
   
    4 用Nexus做Maven私服全攻略


  参考:http://blog.csdn.net/jadyer/article/category/1164953
0 0