V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
esolve
V2EX  ›  Java

Intellij 里模块的理解

  •  
  •   esolve · 2017-05-08 04:22:39 +08:00 · 4486 次点击
    这是一个创建于 2516 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前一直用 eclips 这次用 intellij 看一个 web 项目 结构如下

    就是普通的那种 eclipse web 项目

    在 intellij 下, 模块结构如下:

    <project version="4"> <component name="ProjectModuleManager"> <modules> <module fileurl="file://$PROJECT_DIR$/inxedu.iml" filepath="$PROJECT_DIR$/inxedu.iml"/> <module fileurl="file://$PROJECT_DIR$/src/main/main.iml" filepath="$PROJECT_DIR$/src/main/main.iml"/> </modules> </component> </project>

    我很奇怪啊 /src/main 明明就是这个项目的一个组成部分 为何被独立出来成为一个模块? 使得项目模块和这个组成部分平行关系似的

    14 条回复    2017-05-08 15:51:52 +08:00
    esolve
        1
    esolve  
    OP
       2017-05-08 04:24:12 +08:00
    esolve
        2
    esolve  
    OP
       2017-05-08 04:26:18 +08:00
    晕,没有一个图成功的。。

    http://chuantu.biz/t5/80/1494188684x2890173759.png
    gam2046
        3
    gam2046  
       2017-05-08 07:18:53 +08:00
    近似概念:
    Eclipse Workspace 对标 Idea Project
    Eclipse Project 对标 Idea Module

    另外,jetbrains 全家桶 大法好。
    WispZhan
        4
    WispZhan  
       2017-05-08 08:04:32 +08:00 via Android
    @gam2046 个人感觉虽然这个说法没有错,但是还是有点不合适。

    主要是 eclipse 的 workspace 这个概念很容易混淆。

    可以看其实如果用过 VS 的话,IDEA 的 project 更像是 VS 的解决方案。解决方案里包含 project。

    ---

    其实这些都是模块化方案的一种体现。具体看 OSGi 或者 Jigsaw。又或者 Java 官方文档里的模块化内容。
    Ouyangan
        5
    Ouyangan  
       2017-05-08 09:40:15 +08:00
    eclipse 转 idea 很多人都会有这种困惑 , 多用用就好了..
    lovedebug
        6
    lovedebug  
       2017-05-08 09:47:53 +08:00
    idea 里面模块就是工程,可以导入多个工程(模块)
    如果 eclipse 转,先把旧工程里的模块挨个导入,然后手动设置依赖。
    src/main 这种方式不是约定吗? 约定优于配置
    tedzhou1221
        7
    tedzhou1221  
       2017-05-08 10:09:29 +08:00
    这不是 Maven 的项目结构吗?约定好的啊
    如果你自己随便创建个 Web 项目,你会觉得又不一样了
    esolve
        8
    esolve  
    OP
       2017-05-08 11:38:55 +08:00
    @lovedebug 我不懂的是
    inxedu 这个工程包括了 main 啊
    为何 main 和 inxedu 是模块平行关系?
    lovedebug
        9
    lovedebug  
       2017-05-08 12:21:41 +08:00
    @esolve 在项目 Project Struce 设置里应该只有一个模块才对
    你在项目设置里能看到你的 module 名字是 inxedu,但是 maven 工程默认把 src/main 视作 source 了。所以就平级了。
    lovedebug
        10
    lovedebug  
       2017-05-08 12:23:21 +08:00
    idea 支持一个项目(Maven 项目)多重模块(Project 即 maven 子模块)
    yuedong
        11
    yuedong  
       2017-05-08 13:19:04 +08:00
    楼主的疑问是 /src/main 为何是一个 module,其实,你自己用 IDEA 新建一个 maven 工程,是不会把 /src/main 当做 module 的,或许你是导入进来没处理好,正常情况下不会有 /src/main/main.iml 的
    esolve
        12
    esolve  
    OP
       2017-05-08 13:50:36 +08:00
    @yuedong 所以现在要怎么办?
    yuedong
        13
    yuedong  
       2017-05-08 15:02:16 +08:00
    @esolve 我只是建议你不要把没配置好当做是 IDEA 的规则,并且还试图去理解。至于怎么办,学习 maven、熟悉 IDEA 的 Project Structure,比照常规工程配置。
    esolve
        14
    esolve  
    OP
       2017-05-08 15:51:52 +08:00
    @yuedong maven 和 project structure 现在大致了解
    但是怎么针对这个特殊例子就不知道怎么办了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3304 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.