IDEA 创建基于Maven的多模块Web项目

本文权当我的一个笔记。如果你尚未安装 IntelliJ IDEA.请安装后再来看本文。本文参考了此文.
本文只是个创建项目的入门教程,其中不涉及一些理念的探究以及一些名词的解释。
水平有限,对于文中的疏漏错误,欢迎各位斧正。

一. 新建项目

image.png

或者点 菜单File ~ create Project 都是一样的。

  1. 创建ParentProject(主项目)


    image.png

    这里我们不用点create from archetype. 主项目其实就是个框架,用来包含各个子模块的。


    image.png
    • GroupId: 一般是组织+域名+项目名
    • ArtifactId:项目名称。
    • Version:一般用默认即可。


      image.png

      这一步没什么好说的,就是让你设置项目名称和位置。点Finish就完成了主项目的创建

  2. 创建webapp模块
    点击侧边栏的Project标签来显示Project窗口,在项目上右击创建新的模块。


    image.png

    image.png

    注意这里要选择webapp


    image.png

    填写你的webapp的ArtifactId
    image.png

    这一步也没什么好说的,他是让你选择Maven的路径,这里IDEA自带了Maven3,用默认的就可以了。
    image.png

    同样,这一步让你选择保存位置。也没什么好说的。点Finish后稍等片刻(maven在创建你需要的结构)。
    生成好后,当前结构就如下:


    image.png
  3. 我们再来创建个webservice模块
    和上面创建过程类似,只是这次我们不要选webapp


    image.png

    创建好类似下面:


    image.png
  4. 同样我们再创建个webdao
    和创建webservice模块一样,不用选webapp.创建完类似下面:


    image.png
  5. 让webapp模块依赖webdao和webservice

    image.png

    选择Project structure
    image.png

    image.png

    image.png

    这样设置依赖后,webapp模块就能访问webservice模块和webdao模块里的public类,但是maven在编译的时候还是会报错,因为maven的 webapp模块 dependency依赖里没有webservice模块和webdao模块。
    所以还需要到webapp模块的pom.xml中做配置。

        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <parent>
            <artifactId>MyWeb</artifactId>
            <groupId>com.threshold.myweb</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>webapp</artifactId>
        <packaging>war</packaging>
        <name>webapp Maven Webapp</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.threshold.myweb</groupId>
                <artifactId>webservice</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.threshold.myweb</groupId>
                <artifactId>webdao</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
        <build>
            <finalName>webapp</finalName>
          </build>
      </project>
    

    这样,基本上就算是配置好了。

  6. 其他配置

    • 由于我们的parent主项目只是用来包裹子模块的,所以可以把主Project下的src文件夹删除.


      image.png

      右击删除src目录即可。

    • webapp模块还缺少java目录。同样打开Project Structure窗口做下面的配置。


      image.png

      创建好java目录后再点上面的Sources按钮设为源码目录


      image.png

      设置好后java文件夹会变蓝色。
      image.png

      同理还需要对webservice模块和webdao模块的java目录设为Sources处理(只是这两个模块不需要创建java文件夹,默认已经有了)


      image.png

      全部设置好点OK保存配置。
      image.png

      Project目录还应像上图那样创建包。每个模块的包名都应以你的groupId+artifactID为开头。
  7. 配置Tomcat运行环境
    先要下载Tomcat 以及解压到一个目录,这我就不多说了。自己去官网下载吧。


    打开配置窗口.png

    image.png

    image.png

    image.png

    再点击右边Application Server 旁边的Configure.. 按钮,添加Tomcat 目录


    Tomcat-Server.png

    下拉选择Tomcat-Server.png

    选择Development标签,添加Artifact.png

    选择war exploded.png

    把update action改下(这步可不做).png

    现在默认运行环境就是刚刚配置好的.png
  8. maven配置优化
    我们每个模块可能都需要单元测试,比如JUnit,通常我们会在各个模块pom.xml下添加JUnit的依赖,但是一旦模块很多再加上JUnit的升级,每个模块下的pom.xml都需要更改,增加工作量不说还容易忘记某个模块,这会导致同一个项目可能存在同时依赖某个库的不同版本,而这是我们不想看到的。为了统一管理依赖库的版本,建议将各个子模块所依赖的库信息写到主项目下的pom.xml中。


    image.png

    在modules下面添加:

     <properties>
        <hibernate.annotations.version>3.3.0.ga</hibernate.annotations.version>
        <junit.version>4.12</junit.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    添加好的pom.xml如下:


    image.png

    在这里提示一下,可以点气泡通知允许自动导入依赖。这样新添加的依赖就自动加入到你的模块中了。
    之后再打开各个模块的pom.xml文件,如果有需要的依赖,在子模块中引入即可,而且不需要写依赖的模块的version(因为主项目的pom.xml已经定义了)


    image.png

    这里对于依赖的子模块,建议使用引用的方式。
  9. 其他配置
    通常maven项目创建好后,即使你安装的jdk是1.8的,但是却使用不了1.8的特性。例如下面的提示:


    image.png

    解决方案如下,在主项目的pom.xml中加入plugin配置。

     <build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <encoding>UTF-8</encoding>
              </configuration>
          </plugin>
      </plugins>
  </build>

最后整理好的pom.xml如下:


image.png

现在尽情的去写你的Hello Web吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容