Eclipse项⽬⽂件介绍
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> <!-- 有序的列表,定义了⼀系列的构建命令(b 使⽤⽰例
1. Maven项⽬的配置
⼀个Maven项⽬要确保有如下的内容,如果没有,可以⼿⼯加上下⾯的BuildCommand和natures:
<projectDescription>
<buildSpec>
<buildCommand> <name&aven2Builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures>
2. 禁⽌Javascript的正确性校验
其实禁⽌正确性校验是⼀个不好的习惯,但很多⼈有这样的需求(唐僧:配置⼀下exclude路径多好啊,
即能进⾏正确性校验⼜不会太影响速度),这⾥给出⽅案。删除如下的buildCommand即可,也可选择性的删除如下的nature:
<buildCommand>
<name&lipse.javascriptValidator</name> <arguments> </arguments> </buildCommand> <natures> <nature&lipse.wst.jsdt
3. 把⼀个Java项⽬变为dynamic web项⽬
加⼊如下的buildSpec、nature元素即可:
<buildSpec>
<buildCommand>
<name&lipse.wstmon.builder</name> <arguments> </arguments> </buildCommand> </buildSpec> <natures> <nature>org 拷贝攻略
.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> <attribute name="optional" value="true"/> <attribute name="maven.pomderi 使⽤⽰例
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/tes
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=
4. 界⾯配置⽅法
在项⽬Properties配置界⾯中,具体位置参考下图:
1. 可移植的JDK配置
JDK配置
拷贝攻略
.classpath⽂件可以从同类型的项⽬中直接拷贝,有些⽬录没有的话,注意删掉对应的classpathentry,其他基本⽆需修改,如果有问题再考
虑去改。但如果从别⼈的机器⾥拷贝,需要关注三点:
1. Java SDK的配置:如果Java SDK类型设置的是配置界⾯中的“Alternate JRE”,那么除⾮⾃⼰机器上装了对⽅机器名字⼀样的JDK(不
是类型或者版本,⽽是Installed JREs配置中的名字),否则就需要修改JDK的配置。推荐使⽤配置界⾯中的“Execution
Environment”来配置,避免绑定具体的JDK版本和实现,如<classpathentry kind="con"
path="lipse.jdt.launching.JRE_lipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7" />
2. 如果Web项⽬使⽤了Web容器且绑定了project facet,那么就需要考虑Web容器配置的问题了,以Apache-tomcat为例,需要增
加<classpathentry kind="con" path="lipse.lipse.at.runtimeTarget/Apache-Tomcat
v7.0" />,⽽"Apache-Tomecat v7.0"字符串需要与Eclipse Preferences⾥Server/Runtime Environments⾥的name⼀列保持⼀致。
参考资料
四. /.settings⽬录下的⽂件
Eclipse项⽬.settings⽬录下的配置⽐较杂,各种后缀名的都可以见到,绝⼤多数是⽂本⽂件,格式为properties(多数以.prefs为后缀名)或
XML(多数以.*、.xml为⽂件名)格式的为主。下⾯挨个讲⼀些典型的⽂件。
1. ⽂件:.jsdtscope
.jsdtscope⽂件定义了web项⽬中的源码路径,也就意味着只有web project才会有这个配置。这些源码Eclipse会进⾏validate(如果validate
没有禁⽤)。这个⽂件在实际开发中最⼤的价值在于定义JS⽂件的例外路径,在配置界⾯中配置的话挨个选很烦⼈。
典型内容
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry excluding="**/*.min.js|**/bower_components/*|**/custom/*|**/node_modules/*|**/target/**|**/vendor/*" kind="src" path="src/main/webapp"/>
使⽤⽰例
1. 配置JS的例外(⼀般⽤于让Eclipse不校验第三⽅JS⽂件,避免开启JS校验后Eclipse假死)
在.jsdtscope⽂件的<classpathentry kind="src" path="src/main/webapp"/>增加excluding属性,写法见“典型内容”⼀节。
1. 界⾯配置⽅法
这⼀部分在Eclipse不同版本⾥不⼀样,Eclipse 4.5及以后版本可以参考下⾯的配置,4.4.X版本(更早的版本没有考证)只能配置到具体项
⽬中,不能全局配置。若针对具体项⽬配置,配置界⾯在项⽬的properties⾥的如下位置:
若全局进⾏配置,在Window/Preferences/JavaScript/Include Path中进⾏配置,如下图:
拷贝攻略
.jsdtscope⽂件可以从同类型的项⽬中直接拷贝,基本⽆需修改。
2. ⽂件:esources.prefs
容本⾝⽆法指⽰⽂件本⾝编码的(⽐较绕,XML⽂件第⼀⾏能指⽰⾃⾝编码,CSS也有这个能⼒但⽤得不多),尽量不要多种编码同时存在
(最好在编码规范中禁⽌多重编码同时存在的现象发⽣)。
典型内容
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8 encoding//src/test/java=UTF-8 encoding//src/test/resources=UTF-8 encoding/<project>=UTF-8
使⽤⽰例
js arguments⼀般正常的项⽬打开后,应该看到是统⼀的编码,如果存在例外,可以对例外的⽂件进⾏转码,然后删除这个⽂件中例外的那⼀⾏。
拷贝攻略
3. ⽂件:prefs
典型内容
eclipse.preferences.version=1
如果项⽬中源⽂件版本不正确,编译出来的⽬标版本不对,那么可以在这⾥进⾏修改。界⾯中修改的话,可以参考:
拷贝攻略
4. ⽂件:prefs
典型内容
eclipse.preferences.version=1
activeProfiles=dev
resolveWorkspaceProjects=true
version=1
使⽤⽰例
⼀般在Maven项⽬开发时和⽣产环境中配置不⼀样,可以在l中指定不同的profile来实现,Eclipse项⽬开发时指定profile的话(⽐如
指定名叫dev的profile),就可以配置这个⽂件的activeProfiles属性。如果在界⾯中配置,在这⾥:
拷贝攻略
5. ⽂件:lipse.wstmonponent
典型内容
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0"> <wb-module deploy-name="inkfish-web"> <wb-resource deploy-path="/" source-path="/target/m2e-wtp 使⽤⽰例
在某些项⽬中,从远程maven仓库下载zip组件(当然war组件最好,是maven⾃带⽀持的)解压并放到target,作为webapp⼀部分,就可以
在这⾥修改组装webapp的⽅式。如果在界⾯中配置,在这⾥:
拷贝攻略
6. ⽂件:lipse.wstmon.ml
典型内容
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="Apache Tomcat v8.0"/> <fixed facet="wst.jsdt.web"/> <installed facet="wst.jsdt.web" version="1.0"/> <installed facet="java" version="1.7"/>
使⽤⽰例
界⾯配置在下⾯的位置:
在实际使⽤中有时候在Eclipse的facet配置了以后⼜恢复回去了,总是配不成功,那么就可以直接修改
这个⽂件。常见的⽐如servlet版本不
匹配,那么就可以修改jst.web这个facet的version,如果java版本不对,那么可以修改java这个facet的version。
拷贝攻略
7. ⽂件:lipse.wst.jsdt.ainer
使⽤不多,⽆研究,略去。
典型内容
或者也见过
拷贝攻略
8. ⽂件:lipse.wst.jsdt.ui.superType.name
使⽤不多,⽆研究,略去。
典型内容
Window
或者也见过
Global
拷贝攻略
9. ⽂件:lipse.wst.validation.prefs
使⽤不多,⽆研究,略去。
典型内容
disabled=06target
eclipse.preferences.version=1
拷贝攻略
五. 写在后⾯
有的配置是前后关联的,不是调整⼀个配置⽂件就能完事的,⽐如修改web⼯程⾥的Java版本,可能需要修改好⼏个配置⽂件。
这篇⽂章主要介绍了Eclipse项⽬中常见的⾃动⽣成的⽂件,这些⽂件都可以通过界⾯配置来修改,如果⼤量项⽬同时修改感觉界⾯配置⽐较⿇烦,或者纯粹是极客类型的,可以学习这些配置⽂件的内容。普通程序员只需要了解有这么个东西,出了⼀些界⾯上配置失灵的情况,可以直接修改⽂件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。