IDEA里面的facets和artifacts的讲解

Facets

Facets表述了在Module中使用的各种各样的框架、技术和语言。这些Facets让Intellij IDEA知道怎么对待module内容,并保证与相应的框架和语言保持一致。

使用Facets能让我们下载并配置framework所必须的组件,会自动生成各种各样的描述符,并存储在适当的位置,等等。

大多数Facets可以无冲突得添加到Module中。

也有一些Facets是继承其他Facets的,这些Facets的添加就必须先添加他们的父Facets,这些Facets也要依赖Intellij IDEA的相关插件是否开启.

目前可用Facets列表(包含存在依赖关系的Facets)

举例1:Web Facets

配置Web、EJB、Java EE Application的Facets大致相似,所以我们放在一起介绍一下,不一样的地方会有标记:

下面说下Web、EJB、JavaEE Application Facet:

下面分别介绍每一项配置:

Name:输入该Web Facet的名称,上图用的是Web作为名称,也是默认的名称。

Deployment Descriptors:在这部分,管理应用的部署描述符。

---- Type:只读字段,展示部署描述符类型。各自依赖的facet类型有:Web Module Deployment Descriptor、EJB Module Deployment Descriptor、 Application Module Deployment Descriptor

---- Path:只读字段,展示部署描述符的位置。各自部署描述符有:web.xml,ejb.xml, or application.xml

----  (Alt+Insert) :用这个图标或者快捷键,来添加一个新的部署描述符,在打开的Deployment Descriptor Location对话框选择部署描述符的位置和用到的指定版本(版本不可选就不用管它)。

----   (Enter) :使用这个图标或快捷键,来重新指定部署描述符的位置。

----  (Alt+Delete) :使用这个图标或快捷键,从列表中删除选定的描述符。如果希望同时删除磁盘上的描述符,可以在打开的Delete Deployment Descriptor对话框中勾选Also delete from disk选项。

---- Add Application Server specific descriptor :点击这个按钮添加一个支持application servers的部署描述符,常见的application servers:Geronimo, GlassFish, Tomcat, JBoss, or WebLogic,在弹出的对话框中选择一个application server及其版本。

Web Resource Directories:在这部分,我们将第三方或未分类资源路径映射到部署根目录。

---- Web Resource Directory :只读字段,展示所需的Web Resource位置的本地目录。Web Resource目录包含Web开发所需的文件:JSP、HTML、XML等。Web Resource目录下的内容会被拷贝到由Relative Path所指定的Web模块部署目录。

---- Pah Relative to Deployment Root:只读字段,展示Web Resource相对于Web部署的根目录的相对路径。

----  (Alt+Insert) :使用这个图标或快捷键,打开一个配置Web Resource Directories映射的对话框(Web Resource Directory Path)。

---- 修改和删除按钮就不赘述了。

在这里需要说的是 Web Resource Directory Path 对话框:

---- dialog ----Web Resource Directory Path :指定所需的Web Resource所在的本地目录。

---- dialog ---- Relative path in deployment directory :指定部署Web Resource的相对目录,相对于部署根目录。如果输入斜杠‘/‘,那么Web Resource目录里的文件将被拷贝到部署目录的根目录。

Source Roots :这部分展示当前module所遇到的source root列表。

要了解source roots就得从Content Root说起:

Content Root:

Content Root是包含组成Module的所有文件的文件夹。

一个Module可以包含多个Content Root,但但多数情况一个Content Root就够了。在特殊情况下,没有Content Root的module也很有用。

在Intellij IDEA中Content Root展示样式是:  or .

分类:一个Content Root里的文件夹分为以下几类:

1、Source Roots(或Source Folders,展示样式: 

标为此类的文件夹,告诉Intellij IDEA,此文件夹及其子文件夹应作为构建过程的一部分进行编译。

Java的Module中,Source Roots的子文件夹代表着Java的包结构。

2、Resource Roots(或Resource Folders,展示样式:  ,只有Java Module才可用):

在我们的应用中,是给resource文件用的。如,图片文件、各种各样的xml配置文件和properties属性文件等。

在构建过程中,所有resource Roots下的内容将原封不动得拷贝到Output文件夹。

3、Excluded Roots(展示样式:):

Intellij IDEA对该文件夹基本忽略,对该文件夹下的文件提供非常有限的代码辅助。即便是搜索,Intellij IDEA也不会查找这个文件夹下的内容。

把一些不怎么重要的文件夹标记为Excluded Roots,可以提高Intellij IDEA的用户体验。

如果一个Module只是作为一个单独的依赖库,显然是不需要Content Root的。

举例2:spring Facets

在Facets中添加Spring,会弹出Choose Module对话框,并提示spring facets will be added to selected module。

在Spring Facets中点击将弹出New Application Context对话框。对话框中Name指定context名称,parent context指定父context。

但事实上Intellij IDEA会自动探测,并不需要我们手动配置。

Artifacts:

artifact是一个项目资源的组合体。例如,一个已编译的java类的集合,一个已打包的java应用。

artifact可以是一个archive文件,也可以是一个包含以下结构元素的目录结构:

-- (一个或多个)module的编译Output;

--  包含在module的依赖中的Libraries;

--  资源的集合,如web页面,图片,decriptor文件;

--  其他artifacts;

--  个别文件、目录和archives;

通过artifact配置实现运作:

Artifacts会根据artifacts配置自动生成。配置方式:Project Structure dialog (File | Project Structure | Artifacts)

常规设置:

Name :artifact配置的名称,又或是artifact的名称。

Type :artifact的类型

Output directory :当执行build(Build | Build Artifacts)时,artifacts将被放到这个指定的目录下。

Build on make :当build project(Build | Make Project)时,会自动build artifacts。

由此可见,

①当我们项目中的Type 和 Output directory是:

此时,我们的Artifacts是这个样子:(已编译的资源和已打包的应用)

②当我们的Type 和 Output directory是:

此时我们的Artifacts是这样:(一个目录结构)

Artifacts的默认配置会是这样:

另外关于Artifacts每个TAB的配置看:Artifacts--Intellij IDEA

总结,无论配置Facets、Artifacts还是标记Content Root,都是Intellij IDEA要求我们这样做的,以便其能识别这些文件并整合各插件实现功能。

时间: 2024-08-24 18:48:08

IDEA里面的facets和artifacts的讲解的相关文章

gdb 和 addr2line 调试 crash(包含如何调试so里面的crash)

嵌入式编程中会遇到各种crash的问题. 对于这样的问题,有两种调试方法: addr2line  和 gdb. 第一章   先讲解下gcc 编译加不加 -g 对程序的影响, 还有strip. //1.1.cpp #include <iostream> using namespace std; bool IsUnique() {         int k = 0, m = 0;         k = k/m;      //这里会crash         return true; } in

[python]如何理解uiautomator里面的 child, child_by_text, sibling,及使用场景

如何理解uiautomator里面的 child, child_by_text, sibling,我们借助android原生的uiautomatorviewer抓取的控件来进行理解 以如下图进行详细讲解(左边与右边的通过不同颜色进行圈起来,表示了这些控件的归属关系),例如红圈部分为一个父类,投影绿圈和黄圈均为它的子类(称为child),而绿圈和黄圈属于同级别关系,则可以理解为兄弟关系(称为sibling) 比如要点击"Navigation bar hide"的开关进行打开或者关闭,则代

Afianl框架里面的FinalBitmap加载网络图片

在Afianl框架里,FinalBitmap如何加载网络图片?有什么简单的方法吗?现在让麦子学院的android开发老师讲讲afina框架里面的finalbitmap加载网络图片的方法,Afinal里边FinalBitmap:用于显现bitmap图像,而无需思考线程并发和oom等疑问. 1.测验恳求 运用页面翻开http://avatar.csdn.net/C/6/8/1_bz419927089.jpg"可以看到一张图像. 2.新建FinalBitmap目标 1 FinalBitmap bitm

函数的上下文就是函数里面的this是谁

规律1:函数用圆括号调用,函数的上下文是window对象 比如小题目: function fun(){ var a = 888; alert(this.a); //实际上访问的是window.a } var a = 666; fun(); //弹出666 函数function fun(){}的上下文是什么!不要看它怎么定义,要看它怎么调用!!此时是fun()函数名加上圆括号直接调用,此时上下文就是window对象! 而我们知道:所有的全局变量都是window对象的属性,(注意:函数里面的局部变量

如何去除项目里面的SVN和CVS文件夹

SVN和CVS是我们常使用的项目版本管理工具,为我们的工作带来了很大的方便.但是,有时候我们需要删除里面的SVN和CVS文件夹. 1 如何快速的删除项目中的版本控制文件夹  (1) 删除项目中的SVN文件夹.我们可以使用bat脚本来实现快速递归删除,代码如下: @echo off echo Deleting SVN folders and files under: %1 REM Open Folder specified by parameter. cd %1 REM Recursive del

提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载

要求:手机端打开某个页面的详细信息,因为网速或者别的原因,响应太慢,因为图片大的原因,希望先进来,图片在网页运行的情况再慢慢加载(jquer延迟加载) http://www.w3cways.com/1765.html()  困难:因为页面的图片是用编辑器加进去的        :图片与文字存到数据库的字段中 :实现思路:从数据库中读取这个字段,把字段里面的src替换成lazyload 然后再返回给页面 这里主要讲是怎么把从数据库取到的数据里面的字段里面的值替换然后与页面直接的数据转换 首先 pu

直接修改别人jar包里面的class文件 工具:jclasslib

出于某些原因 需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,没有找到合适的方法 开始我是先用jd-gui反编译 把我需要修改的那个A.class文件反编译出来把代码保存到A.Java 然后直接在dos里面用javac A.java编译 问题来了.. 因为A.java引用了很多其他jar下面的方法 而且A.java有package 鼓捣了半天以后 最终结果:编译无法

form里面的action和method(post和get的方法)使用

一.form里面的action和method的post使用方法 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="formsubmitpost.aspx.cs" Inherits="formsubmitpost" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xh

javascript正则找script标签, link标签里面的src或者 href属性

1. [代码]javascript 简单的search    <script(?:(?:\s|.)+?)src=[\"\'](.+?)[\"\'](?!\<)(?:(?:\s|.)*?)(?:(?:\/\>)|(?:\>\s*?\<\/script\>)) <script  src="sdfsdf/sdfd.js"          type="text/javascript"  /><scr