今天下午最后近1小时及晚上2个多小时,我都花费时间在工程环境配置上,自尊心被严重摧残,各种郁闷和抱怨。源头是我部分刷新代码后运行工程依赖的jar报错,后来找同事发现是因为我没更新pom.xml文件,重新刷新pom文件后突然发现eclipse的两个工程无法显示maven仓库,切换各种视图project manager和packpage manger等各种视图都是不行,尝试右键maven-》update project还是不行,尝试网上说的方法:1.把工程去掉maven属性,然后在命令行窗口执行mvn clean命令,然后再工程右键configuration中把工程转为maven,还是不行。2.尝试在eclipse中删掉工程,去掉工程中的.classpath,.project文件后再次导入工程还是报相同的maven错误。3.同事找到一个可用的maven工程,把里面的.classpath文件复制到不行的工程中后刷新居然正常出现了maven的仓库。但对另一个工程还是不行,修改.project文件,.classpath文件后最终在packpage manager中找到了本地仓库,目前为止还剩下一个问题就是不知为何我电脑环境下的maven无法下载某个jar包依赖的jar包,而其它电脑上可以,目前也没有同事有很好的办法解决此问题。为此我被深深的打击了,工程无法正常运行,我却想不到任何自己确定的尝试解决方法,网上各种随波逐流的知识基本不能解决我个性化问题,想到最后感觉还是自己基础知识太差,对eclipse工程、maven的机制不很理解,要想彻底解决该问题,我必须吸取今天的教训,彻底弄明白整个问题,以后不要再犯类似的环境问题了。
elipse为工程创建的各项内容含义:
.classpath 文件
- <?xml version="1.0" encoding="UTF-8"?>
- <classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="test"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
- <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar">
- <attributes>
- <attribute name="javadoc_location" value="file:/home/wpc/Work/Apache/dom4j-1.6.1/docs/api$
- </attributes>
- </classpathentry>
- <classpathentry kind="output" path="bin"/>
- </classpath>
从数据上我们容易看出,上面描述了工程的依赖文件:
- 源文件的具体位置(kind="src")
- 运行的系统环境(kind="con")
- 工程的library的具体位置信息(kind="lib")
- 在每个lib的xml子节点中,有关于它的其它配置信息(例如我配置的那个"javadoc_location")
- 项目的输出目录(kind="output")
总体上说这个文件就是配置整个工程的运行环境。
.project
- <?xml version="1.0" encoding="UTF-8"?>
- <projectDescription>
- <name>CreateInterpret</name>
- <comment>JavaCC Nature@key 32303037303632392D3130303020437265617465496E746572707265742F777063 </comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>sf.eclipse.javacc.javaccbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>sf.eclipse.javacc.javaccnature</nature>
- </natures>
- </projectDescription>
从数据上看,我们可以了解到这些配置主要是描述工程的基本信息:
- 工程名<name></name>
- 工程注释描述<comment></comment>
- 运行时需要的额外Eclipse插件<natures></natures>,及其具体加载方式信息<buildSpec></buildSpec>
如果你在开发过程中向工程里面加入了很多额外的插件,则必然会导致你的Eclipse启动速度变慢。在这种情况下,你可以到这个文件里面去掉一些插件,不过这样一来你在开启那些关联文件的时候会加载那些插件。
.settings
这里面存放各种插件的配置文件。
然后查了下java jar包依赖分析工具,发现还是很多,除了之前知道的jdepand外,还有Class Dependency Analyzer (CDA)、JarAnalyzer等,主要关注了CDA,
http://www.dependency-analyzer.org/#PluginAPI
貌似很强大,但没看到关于原理的介绍,随后开发任务不紧张的时候要尝试下。