maven web 项目的创建

1、maven环境的配置

   首先下载maven资源 访问官网https://maven.apache.org/ 然后点击左侧的Download 然后在File栏中选择所需要的资源。

    直接下载地址链接http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.zip,

    下载成功后直接解压,然后进行环境配置。

     变量名:m2_home

     变量值:D:\study\apache-maven-3.5.3-bin\apache-maven-3.5.3(需要根据自己下载解压的地址进行配置)

     然后在Path变量值中把m2_home添加进去:%m2_home%\bin;

     然后在cmd命令框中输入mvn -v进行运行测试,如何能够显示maven相关信息则配置成功。

     设置资源下载库的位置:在settings.xml文件中修改localRepository中的路径,例                                                                               如            <localRepository>D:\study\mven_jar_download</localRepository>

      并把settings.xml文件放到D:\study\mven_jar_download文件中

     设置jdk版本(下载资源文件中的settings.xml):在profile标签里修改成自己所使用的jdk版本(如果不进行修改也没有关系只不过在创建项目时JRE System Library 的默认版本号是settings.xml中默认的1.4版本)

       <profile>

      <id>jdk-1.8</id>


      <activation>
  <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>

      </activation>


      <properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  </properties>
       </profile>

      在mirrors标签下中的url可以设置成国内的镜像库或者aliyun的镜像库

      aliyun镜像库: http://maven.aliyun.com/nexus/content/groups/public/ 

       不设置则为默认地址http://my.repository.com/repo/path

2、eclipse 的配置(eclipse下载地址:https://www.eclipse.org/downloads/)

      点击helo→install new software 点击Add name 填写maven location 填写http://m2eclipse.sonatype.org/sites/m2e

      然后点击next根据提示即可安装完成。(官方下载最新版本eclipse自带maven插件)

        开始配置maven 的相关设置 点击eclipse 上面的Window然后选择perferences→maven→installations 点击Add 然后选           择maven 的解压地址然后点击Finish即可。

      点击User Settings 在User Setting下面选择自己所要下载资源包中的settings.xml然后点击ok。

3、创建maven web项目

      maven web项目目录结构

        src

               main

                    java

                    resources

                test

                    java

                    resources

      右键点击new→other→然后选择Maven Project点击next→next→选择org.apache.maven.archetypes maven-archetype-webapp 1.0然后点击next,填写Group Id(公司网址倒着填写),Artifact Id(项目名称),package(包名),点击Finish.

然后补全相关文件

            大致目录结构如下:

             projectName

                                src/main/java

                                src/main/resources

                                src/test/java

                                src/test/resources

                                JRE System Library[JavaSE-1.8]

                                Maven Dependencies

                                Referenced Libraries

                                src

                                       main

                                                webapp

                                                               WEB-INF

                                                                            web.xml

                                  target

                                  pom.xml

        刚创建项目之后index.jsp会有一个红色的x号,那是因为没有引入相应的jar包,然后在pom.xml中添加

              <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax.servlet-api.version}</version>
<!-- 只在编译时和测试时运行 -->
<scope>provided</scope>
</dependency>

          项目创建完成后测试项目是否能够正常启动,两种方式:

            (1)jetty

                在pom.xml中添加

                            <!-- 使用jetty服务测试项目是否创建成功 -->

<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.16.v20140903</version>

                                <executions>
<execution>
<!-- 在打包成功后使用jetty:run来运行jetty服务 -->
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>

                然后点击项目右键Run As 选择Maven build.....在Goals中输入 clean package查看控制台是否报错,然后访问localhost:8080进行访问,如果页面显示Hello World! 则恭喜你已经成功了。

                   (2)tomcat(tomcat与jetty只能让一个有效)

                     在pom.xml中配置

                        <groupId>org.apache.tomcat.maven</groupId>

                        <artifactId>tomcat7-maven-plugin</artifactId>

          <version>2.2</version>

                    然后点击项目右键Run As 选择Maven build.....在Goals中输入 clean package查看控制台是否报错,然后访问localhost:8080/projectName进行访问,如果页面显示Hello World! 则恭喜你已经成功了。

如果编译时遇到

[ERROR] /D:/study/project/bsdapp/src/main/java/com/mobisoft/meapbase/gateway/bi/ResDealer.java:[22,13] 编码GBK的不可映射字符

解决办法:

pom.xml文件中添加

<!-- 指明编译源代码时使用的字符编码,maven编译的时候默认使用的GBK编码, 通过project.build.sourceEncoding属性设置字符编码,告诉maven这个项目使用UTF-8来编译 -->  

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

即可

4、maven常用命令

        mvn -v 查看maven 版本信息

        compile  编译项目

        test   测试

        package 打包

        clean 删除target

         install 安装jar包到本地仓库中

5、maven的依赖范围、依赖传递、依赖冲突、聚合和继承

       maven的依赖范围

        (1) . complie 默认,所有范围
        (2). provided 编译和测试
(3). runtime 测试和运行
(4). test 只有测试 Junit
(5). system 编译和测试,可移植性差
(6). import 导入范围,只在实用dependencyManagement中表示从其他pom导入dependency

        <dependencies>
         <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>

            <version>3.8.1</version>

              <!-- 依赖的范围 -->
              <scope>test</scope>
          </dependency>
         </dependencies>

       mave的 依赖传递

        <!-- hyue项目依赖于a项目 -->
<dependency>
<groupId>com.hy</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

在执行compile命令时需要先将所依赖的项目进行打包(先将a项目进行打包也就是执行package命令,并且将项目a进行安装,即执行install命令)

        maven 的排除依赖(hyue项目依赖于a,a依赖于b,但是如果这样hyue项目就依赖于a和b了,但是b只想听a的,于是排除依赖就起作用了。)

                <!-- hyue项目依赖于a项目 -->
<dependency>
<groupId>com.hy</groupId>
<artifactId>a</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 排除依赖 -->
<exclusions>
<exclusion>
<groupId>com.hu</groupId>
<artifactId>b</artifactId>
</exclusion>
</exclusions>
</dependency>

mave 的依赖冲突的原则

依赖冲突:依赖了不同版本的相同构建
1.短路优先:优先解析依赖层级少的版本
2.声明优先原则:当依赖层级相同时,则谁先声明就解析谁

1.短路优先 如果A B依赖了一个不同版本的构件X(jar),且A->B->C,对于依赖于A B的C,此时会依赖哪个版本的构件?比如以下情况,会优先解析第二个,C会继承B的依赖版本2.0
A->B->C-X-2.0(jar)
A->B-X-1.0(jar)
做测试的时候需A,B需要安装到本地仓库才会生效.
2.先声明先优先
如果路径长度相同,则谁先在pom中声明,先解析谁(从上到下的解析顺序),
A->B->X-1.0(jar)
A->C->X-2.0(jar)

maven 的聚合和继承

        聚合

        <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 项目的聚合,在所聚合的项目中设置packaging 为pom <packaging>pom</packaging>-->
<modules>
<module>../a</module>
<module>../spring-mvc-study</module>
</modules>

     继承

      <!-- 父类中的jar包,记得把 <packaging>jar</packaging>中的jar 修改成pom <packaging>pom</packaging>-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!-- 依赖的范围 -->
<scope>test</scope>
</dependency>
</dependencies>

</dependencyManagement>


        子类中的内容

        <properties>
<javax.servlet-api.version>4.0.0</javax.servlet-api.version>
</properties>
<!-- 子类中所需要在parent中填写父类中的相关信息,并且子类中的junit 版本号以及依赖范围可以删除 -->
<parent>
<groupId>com.hy</groupId>
<artifactId>hyue</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- <version>3.8.1</version>
<scope>test</scope> -->
</dependency>
</dependencies>









猜你喜欢

转载自blog.csdn.net/u012129030/article/details/79944310