Eclipse中.setting⽬录下⽂件介绍
Eclipse项⽬中系统⽂件介绍
⼀. 写在前⾯
1. ⽂章较长,可以直接到感兴趣的段落,或者直接关键字搜索;
2. 请原谅作者掌握的编程语⾔少,这⾥只研究Java相关的项⽬;
3. 每⼀个⽂件仅仅做⼀个常见内容的简单介绍,这些知识多数来⾃于实践理解和⽹络搜索,可能会不全⾯,更详细的可以看相关的参考
资料。
⼆. 概述
Eclipse在新建项⽬的时候会⾃动⽣成⼀些⽂件。这些⽂件⽐如.project、.classpath、.settings⽬录下的所有⽂件等。这些⽂件是Eclipse 项⽬的元数据,描述了⼀个Eclipse项⽬。
通常这些⽂件⾥的内容可以通过配置具体Eclipse项⽬的Properties来进⾏修改,⽽且普通⽤户⽆需知道
这些⽂件具体的⽤处,但是本着探究问题本质的态度,我们不妨可以了解⼀下这些⽂件及内容具体是⼲什么⽤的。当熟悉了这些⽂件的内容后,往往在项⽬配置中可以直接查看和修改⽂件内容,可以起到事半功倍的效果。
三. 项⽬根⽬录下的⽂件
Eclipse项⽬根⽬录下通常有两个⽂件:.project和.classpath,.project是Eclipse项⽬必须有的⽂件,⽽.classpath是Java项⽬必须有的⽂件。这两个⽂件均是XML格式的⽂本⽂件,⽤普通⽂本编辑器即可打开。
1. ⽂件:.project
.project描述了⼀个Eclipse项⽬。
典型内容
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<!-- name⾥的内容代表项⽬名字,对应了Eclipse项⽬的名称,不是Maven的finalName -->    <name>demo</name>
<!-- 项⽬的注释 -->
<comment></comment>
<!-- 引⽤的项⽬的名字 -->
<projects>
</projects>
<!-- 有序的列表,定义了⼀系列的构建命令(buildCommand) -->
<buildSpec>
<buildCommand>
<!-- 项⽬构建命令的名字 -->
<name&lipse.javascriptValidator</name>
<!-- 构建命令初始化时需要传递的参数(⼀般看到的都是空的) -->
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name&javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name&lipse.wstmon.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name&aven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<!-- 项⽬中⽤到的⼀些特性的列表 -->
<natures>
<!-- 每⼀个特性的的名字 -->
<nature&lipse.jem.workbench.JavaEMFNature</nature>
<nature&dulecore.ModuleCoreNature</nature>
<nature&javanature</nature>
<nature&aven2Nature</nature>
<nature&lipse.wstmon.ature</nature>
<nature&lipse.jsNature</nature>
</natures>
</projectDescription>
使⽤⽰例
1. Maven项⽬的配置
⼀个Maven项⽬要确保有如下的内容,如果没有,可以⼿⼯加上下⾯的BuildCommand和natures:
<projectDescription>
<buildSpec>
<buildCommand>
<name&aven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature&aven2Nature</nature>
</natures>
</projectDescription>
2. 禁⽌Javascript的正确性校验
其实禁⽌正确性校验是⼀个不好的习惯,但很多⼈有这样的需求(唐僧:配置⼀下exclude路径多好啊,即能进⾏正确性校验⼜不会太影响速度),这⾥给出⽅案。删除如下的buildCommand即可,也可选择性的删除如下的nature:
<buildCommand>
<name&lipse.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
<natures>
<nature&lipse.jsNature</nature>
</natures>
3. 把⼀个Java项⽬变为dynamic web项⽬
加⼊如下的buildSpec、nature元素即可:
<buildSpec>
<buildCommand>
<name&lipse.wstmon.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature&dulecore.ModuleCoreNature</nature>
<nature&lipse.wstmon.ature</nature>
</natures>
拷贝攻略
.project⽂件可以从同类型的项⽬中直接拷贝,但需要修改/projectDescription/name⾥的项⽬名称。
参考资料
2. ⽂件:.classpath
.classpath描述了⼀个Eclipse项⽬。
典型内容
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<!-- 含义:src/main/java属于源码,编译后放到target/classes⽬录下 -->
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
xml文件怎么打开<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<!-- 代表了配置是从l⾥来的,受maven管理,⾮maven项⽬可以去掉这个 -->
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<!-- 这⾥的including代表了⽬录下所有.java⽂件才会被处理,其他⽂件⼀概忽略,不会出现在target/test-classes⽬录下 -->
<classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<!-- 这⾥代表使⽤标准的JavaSE-1.7 JDK,相⽐来说如果⽤default和直接写当前系统中安装的JDK是不推荐的 -->
<classpathentry kind="con" path="lipse.jdt.launching.JRE_lipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">        <attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<!-- 代表了Maven中的dependencies也都放到classpath⾥ -->
<classpathentry kind="con" path="lipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<!-- web⼯程中把依赖的jar都放到输出的webapp⾥/WEB-INF/lib下⾯ -->
<attribute name="lipse.jstponent.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<!--  -->
<classpathentry kind="con" path="lipse.lipse.at.runtimeTarget/Apache-Tomcat v7.0">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
</attributes>
</classpathentry>
<!-- 统⼀的输出为target/classes -->
<classpathentry kind="output" path="target/classes"/>
</classpath>
使⽤⽰例
1. 项⽬有test/resources或test/java⽬录,但是不识别为classpath
酌情加⼊如下的classpathentry:
<classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java" />
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources" />
2. 项⽬是maven⼯程,但是构建路径貌似怎么也配置不对
Maven是约定优于配置(convention over configuration)的,但是.classpath是配置型的,⼀般不会出现这种情况,如果出现了,检查maven约定的类路径(⽐如src/main/java、lipse.m2e.MAVEN2_CLASSPATH_CONTAINER)中是否有如下的元素:
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
3. Maven的依赖jar⽂件放不到/WEB-INF/lib⾥
确认或加⼊如下的配置:
<classpathentry kind="con" path="lipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="lipse.jstponent.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
4. 界⾯配置⽅法
在项⽬Properties配置界⾯中,具体位置参考下图:
1. 可移植的JDK配置
JDK配置
拷贝攻略