maven下构建项目结构详解

                    Maven2下的非web项目

1. 初始化Maven2环境
下载页面:http://maven.apache.org/download.html
2. 配置环境变量,JAVA_HOME,M2_HOME,把%M2_HOME%\bin添加到环境变量PATH中。
建立项目目录结构:
+ mvnWorkspace/
+ src/
    + main/
      + java/
        + com/
          + hibernate/
            + maven2/
              + dao/
                * Helloworld.java
* pom.xml

如上所示,ch02目录下有一个src目录和一个pom.xml文件。src目录下放着所有源文件,因为它本身就是source的简写。pom.xml是Maven2的工程文件,里边放着与工程相关的各种配置, 默认情况下,java源代码都放在src/main/java/目录下。记得要使用完整包名,这样Maven2才能根据java文件和对应的class文件进行增量编译,

3. 在src/main/java/目录下,我们建立了com/hibernate/maven2/dao/这样的目录结构,这个目录是和java中的报名相互对应。之后可以在Helloworld.java中见到相应的package声明。

4. 在控制台下进入mvnWorkspace目录,执行mvn package, 操作完成之后项目的目录结构变成了这样。

+ mvnWorkspace/
+ src/
    + main/
      + java/
        + com/
          + hibernate/
            + maven2/
              + dao/
                * Helloworld.java
+ target/
    + classes/
      + com/
        + hibernate/
          + maven2/
            + dao/
              * Helloworld.class
    + maven-archiver/
      * pom.properties
    * ch02-1.0.jar
* pom.xml
5. 多出来的target/目录下包含了刚才的操作所生成的临时文件,编译生成的class文件放在target/classes/目录下。maven-archiver/目录下是打包所需的配置文件,最终打包生成的结果是target/目录下的mvnWorkspace-1.0.jar。

6. 使用java命令执行生成的mvnWorkspace-1.0.jar,命令如下:

7. 执行jar验证结果,使用java命令执行生成的mvnWorkspace-1.0.jar,命令如下

call java -cp target/mvnWorkspace-1.0.jar com. hibernate.maven2.dao.Helloworld

         Maven2下的web项目

1.       war项目的目录结构
+ webHelloWorld/
+ src/
    + main/
      + resources/
      + webapp/
        + WEB-INF/
          * web.xml
        * index.jsp
* pom.xml 
项目的src/main/目录下多了resources/和webapp/两个目录。resources/目录暂时是空的,它现在只是用来保证在项目构建时在target/下生成classes目录,它在项目中的具体作用我们会在以后细细道来。现在我们需要注意的只有webapp/这个目录,这个目录下放置着web所需的页面资源以及配置文件,这里的WEB-INF/目录和它下面的web.xml是必须存在的,如果省略了它们,打包时就会出错。

2.       打包

进入webHelloWorld目录下,执行mvn package进行打包.

操作结束后的目录结构会变成下面这样:

+ webHelloWorld/
+ src/
    + main/
      + resources/
      + webapp/
        + WEB-INF/
          * web.xml
        * index.jsp
+ target/
    + webHelloWorld-1.0
      + META-INF
      + WEB-INF
        + classes
        * web.xml
      * index.jsp
    + classes
    + maven-archiver
      * pom.properties
    + war
      + work
        * webapp-cache.xml
    * webHelloWorld-1.0.war
* pom.xml
        
我们所需要的只有target/目录下的ch03-1.0.war,把它放到tomcat的webapps/目录下,部署成功之后就可以使用浏览器进行访问。

3.       在项目目录下执行mvn eclipse:eclipse就可以生成eclipse的项目文件,此命令会生成eclipse 所需要的.project 和.classpath 文件,maven2告诉ecilpse使用它默认的目录结构进行编译和发布等操作(src,output,con)。

             POM文件结构

1.       Project Object Model是Maven2项目的基础所在,简单来说它就是一个XML文件,Maven2用它来描述一个工程的整个生命周期所需要执行的一系列功能和特性, 任何项目都最少要包含以下几个标签.

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.hibernate.maven2</groupId>
<artifactId> mvnWorkspace</artifactId>
<version>1.0</version>
</project>
l modelVersion这个标签必须存在,而且它的值必须是4.0.0,这标志着我们现在使用的是maven2,

l groupId和artifactId合起来作为当前项目的唯一标识,maven2最终会根据这两个值,决定项目发布到repo上时所处的位置

l version是项目的版本号,它用来标记同一个项目发布的不同版本

2.       管理依赖

我们平常接触最多的就是dependencies标签了。因为既然使用了maven2,最大的得益之处还是可以用它统一管理依赖库。dependencies和它内部的dependency标签就用来配置当前项目所依赖的第三方库的.

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.hibernate.maven2</groupId>
<artifactId>mvnWorkspace</artifactId>
<version>1.0</version>

<dependencies>
    <dependency>
      <groupId> com.hibernate.dao</groupId>
      <artifactId>mnvWorkspace</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
</dependencies>
</project>

我们可以看到dependency标签中也包含了groupId,artifactId和version信息,这三部分就是一个maven2项目所需的最小配置,也是maven2所管理的项目的唯一标识,有了这三个数据,maven2就可以在repo中查找到对应的依赖,并将其包含到我们的项目中,从而实现对依赖库的管理,可以使用dependencies和dependency为项目定义多个依赖,并且每个依赖都需要groupId,artifactId和version这些数据就可以了.

Maven权威指南中文版(完整)

http://wenku.baidu.com/view/d8976f0e52ea551810a6878c.html
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值