文章目录

  • IDEA 如何获取项目的模块数据
  • 从项目源中选择模块加入当前项目中
  • 如何移除项目中的模块
    • 方式一,选择模块的根目录(Content Root),鼠标右键 Remove
    • 方式二,打开【项目结构】窗口,在模块列表中选中模块,点击上方的减号(“-”)来移除项目
  • 从项目源选择没有源码文件的模块加入到项目中(有问题)
    • 如何导入没有源代码根目录的模块(非Java模块)
  • 关于模块的配置文件

IDEA 如何获取项目的模块数据

这里要特别理解一个问题,硬盘上的项目文件必须在 IDEA 的配置文件中,IDEA 才能识别这个文件,而通过 IDEA 添加本地文件(例如添加项目或者添加模块),其实就是把文件的相关路径和属性信息写入到 IDEA 的配置文件中,IDEA 在开启时会去读取相关的配置文件,从而在相关的功能界面上显示该文件的有关信息。

把模块从当前项目中移除(remove),就是把这个模块的配置信息删除了,当然模块的相关文件依旧在硬盘上。所以从硬盘选取模块目录添加到当前项目中,就必须走完整个流程,这样模块的相关信息才会重新写入配置文件中,那么已经写入配置文件的模块,你如果再从硬盘选择添加,IDEA 会提示有关的 .iml 配置文件已经存在了,你是否需要覆盖,你可以选择覆盖或者选择重复使用已存在的配置文件都可以。

实际上项目的模块信息是写入到文件 projectname/.idea/modules.xml 中,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4"><component name="ProjectModuleManager"><!--标签<modules/>内有几个<module/>就表示有几个模块,如果remove模块,则下面对应的<module/>会被删除--><modules><module fileurl="file://$PROJECT_DIR$/encode/encode.iml" filepath="$PROJECT_DIR$/encode/encode.iml" /><module fileurl="file://$PROJECT_DIR$/jdbc/jdbc.iml" filepath="$PROJECT_DIR$/jdbc/jdbc.iml" /><module fileurl="file://$PROJECT_DIR$/servlet-demo/servlet-demo.iml" filepath="$PROJECT_DIR$/servlet-demo/servlet-demo.iml" /></modules></component>
</project>

打开项目时,IDEA 会去读取上面的配置文件,然后在模块列表窗格中显示模块列表,如下图所示:

从项目源中选择模块加入当前项目中

不论是完全地新建模块还是选择硬盘上已有的模块目录添加,对于 IDEA 而言,都是新建模块,选择模块只是硬盘的文件无需创建而已,但是模块的相关数据同样要重新写入 IDEA 相关的配置文件中。而完全新建模块,只是 IDEA 会先根据用户自定义的内容去调操作系统的相关接口创建文件(目录或者文件),然后再把相关的模块数据写入到配置文件中。

其实任何第三方的文件管理工具的实现原理都是这样的,第三方软件无法将特有的属性添加到操作系统的文件系统中,所以只能把操作系统的文件名称、路径等信息记载下来,然后赋予第三方软件自己特有的属性内容 ,从而在第三方的软件中实现对硬盘上的文件的间接管理。



上面的操作其实就是让你选择包的根目录,或者叫源代码的根目录(Source Root),通常是 src,在目录 src 下创建包,在包下创建源文件,指定了包的根目录,IDEA 就知道源文件在哪里,于是 IDEA 就把所有的源文件路径作为编译器的参数,编译根据路径找到源文件然后进行编译,而编译好的 class 文件则放在 IDEA 指定的项目根目录下的 out/production/ 目录下面。

说白了,其实 IDEA 就是自动执行下面的编译命令语句:

cd 项目根目录
javac @sourcefiles -d ./out/production/模块名称/

文件 sourcefiles 包含所有的源文件路径,目录 out 则是存放 class 文件的目标目录。



如何移除项目中的模块

移除模块,只是将模块从项目中移除,即把文件 modules.xml 中对应的标签删除掉,这样使用 IDEA 打开项目就看不到被移除的模块了,但是模块的文件依旧保存在硬盘中。

方式一,选择模块的根目录(Content Root),鼠标右键 Remove


方式二,打开【项目结构】窗口,在模块列表中选中模块,点击上方的减号(“-”)来移除项目

从项目源选择没有源码文件的模块加入到项目中(有问题)

如果你选择的模块没有源码文件,那么作为模块添加到项目中也不能正常使用,因为在添加模块的过程中需要选择源码文件的根目录,而你的模块下没有源码文件,所以在这个步骤中就出现问题了:

那么你继续添加后,在模块管理界面中,根本无法配置源码文件的根目录,什么意思?看下图:

也无法创建包(Package),我选中 src 目录,点击鼠标右键根本看不到 Package:

目录的颜色也是不同的:

你可以在【项目管理】窗口选中目录,点击鼠标右键,然后选择【Mark Directory as】–>【Sources Root】:


标记为【Sources Root】之后,目录的颜色就变成“蓝色”的,此时选中它,然后点击鼠标右键,在【new】菜单下的子项中就可以看到 【Package】了:

接着你选择包,然后创建类文件,创建完成后再去模块管理界面看下,你会发现还是无法选择模块的 Sources Root :

我高度怀疑,这是 IDEA 的 bug。

如何导入没有源代码根目录的模块(非Java模块)

创建一个相同名称的模块,在创建过程中会提示是否覆盖已存在的 .iml 文件,选择覆盖即可。

关于模块的配置文件

你把某个目录当成项目的模块添加到项目中,那么这个模块根目录下面就会自动生成一个 .iml 文件,这个配置文件记载了模块的源码文件的根目录等信息。

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4"><component name="NewModuleRootManager" inherit-compiler-output="true"><exclude-output /><!--指定了内容根目录的位置--><content url="file://$MODULE_DIR$"><!--指定了源文件根目录的位置--><sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /></content><orderEntry type="inheritedJdk" /><orderEntry type="sourceFolder" forTests="false" /></component>
</module>

IntelliJ IDEA 如何知道项目中的模块数据_如何从项目源中选择模块加入当前项目中(添加模块)_如何移除项目中的模块(移除模块/删除模块)相关推荐

  1. 网络云存储技术Windows server 2012 (项目七 存储服务器重复数据删除的配置与管理)

    网络云存储技术Windows server 2012 (项目七 存储服务器重复数据删除的配置与管理) 目录 前言 一.项目背景 二.项目实训题: 1.在SRV1创建一个10G的逻辑硬盘,开启文件级重复 ...

  2. python提取pdf表格数据_Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  3. android字符串获取数字索引,从字符串中提取特定数据(Extract specific data from a string)...

    从字符串中提取特定数据(Extract specific data from a string) 我有一个带有描述的长字符串. 我想从字符串中提取一些信息. 但我无法弄明白该怎么做. 这是字符串: C ...

  4. pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe)

    pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe) 目录 pandas使用iterite ...

  5. Spring MVC Controller中返回json数据中文乱码处理

    问题 在使用spring MVC Controller的过程中,发现返回到客户端的的中文出现乱码.后台Java代码: @RequestMapping(value = "/upload&quo ...

  6. r语言导出文件为xlxs_R语言数据导出到Excel表格-如何将R语言中的表格数据输出为Excel文件...

    r语言怎么将values中的数据导出为excel 直接新建一个txt文件,打开,然后按ctrl A,复制excel表格中数据,直接粘贴至该打开的txt文件里即可.或者打开excel后,另存为" ...

  7. 荣刚:中国航信数据中心与灾备中心的运行

    2009年4月17日,由国际灾难恢复协会.中国信息安全测评中心.成都市人民政府主办,成都市信息化办公室和万国数据服务有限公司承办,中国国际文化交流中心支持,北京博思商通资讯有限公司策划执行的" ...

  8. 基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库 ...

  9. 如何在Android Studio中删除模块

    本文翻译自:How to delete a module in Android Studio Is there a way to delete a module within Android Stud ...

最新文章

  1. Oracle简单常用的数据泵导出导入(expdp/impdp)命令举例(上)
  2. 企业网络推广时网站获取排名离不开企业网络推广文章内容的更新
  3. ObservableCollection 类
  4. SpringBoot_日志-slf4j使用原理
  5. 补作业:随机生成二元四则运算
  6. [蓝桥杯2018初赛]分数-找规律
  7. 好玩的Scratch
  8. ObjectDataSource与GridView配合使用经验总结系列二:分页
  9. 学习 | Node.js 之定时任务
  10. Getmemory函数详解--内存操作的理解
  11. Python开发入门与实战14-基于Extjs的界面
  12. scala 高阶函数,闭包及柯里化
  13. sqlserver200864位下载_Microsoft SQL Server 2008 R2 官方简体中文正式版下载
  14. Unity web聊天通讯功能开发(1)
  15. 搜索引擎如何优化?这些方法要知道
  16. php里style标签,style标签怎么用?
  17. No implementation found for void java接口不能跳转到实现类
  18. 百度地图绘制行车路线
  19. java开发 审核流程思路_java 实现一套流程管理、流转的思路(伪工作流) 【仅供参考】...
  20. datastage作业hang住

热门文章

  1. spring mvc教程_Spring MVC教程
  2. 注释嵌套注释_注释,无处不在的注释
  3. lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码
  4. 具有Spring Security的Grails
  5. Web应用程序安全性:战斗自己或寻找理智的边缘
  6. javafx中的tree_JavaFX中的塔防(2)
  7. java 反射操作字段_x86上的Java最终字段没有操作?
  8. 使用RabbitMQ进行消息传递
  9. JPA persistence.xml SQL脚本定义
  10. ubuntu生成密钥和证书_基于浏览器的密钥生成以及与浏览器的密钥/证书存储的交互...