eclipse导入已存在的maven工程,代码目录结构异常的问题解决

Life is short , play more!
本文来自lihao's Blog,转载请注明。

有时候经常碰到在eclipse导入已存在的maven工程,代码目录结构异常的问题。

例如我有一个maven工程, 别人从scm checkout 出来后,导入到eclipse发生此问题。 具体的发生情景无法判断,但根本原因是和eclipse 是有直接关系的。 但实际因为我们使用maven, eclipse 里展示的工程出现一堆xx错误和异常的classpath目录结构还是让人非常崩溃。 就连好好的 cross reference 浏览代码都不行了。

根本原因是和 eclipse在工程目录下创建的 classpath 内容错误。 但是为什么错误,以及是否是eclipse的bug还无法具体定位。

解决方法就是直接修改 .classpath

1. 例如我一个工程如下目录

myproject ->
          -> src 
                 ->main
                       -> java
                       -> resources
                 ->test 
                       -> java
                       -> resources
          -> target
          -> pom.xml

如此, main/java , test/java , main/resource , test/resource 只是将src(都是源代码或者源代码相关的文件) 按照类型区分放到不同的src目录下。 便于我们理清楚我们的代码结构。 至于编译后,我们放入的位置可以是同一个位置。 (即, 编译前 src的里的代码都是放在不同的子目录下, 但是编译出来仍然可能都存在于 target/classes 里。 )

2. 如果发生异常,则我们手动修改 .classpath , 具体情况可以根据情况进行变更和修改。

	<classpathentry kind="src" including="**/*.java" output="target/classes" path="src/main/java">
		<attributes>
			<attribute name="optional" value="true"/>
			<attribute name="maven.pomderived" value="true"/>
		</attributes>
	</classpathentry>
	<classpathentry kind="src" including="**/*.java" output="target/test-classes" path="src/test/java">
		<attributes>
			<attribute name="optional" value="true"/>
			<attribute name="maven.pomderived" value="true"/>
		</attributes>
	</classpathentry>
		<classpathentry kind="src" output="target/classes" path="src/main/resources">

	</classpathentry>
	<classpathentry kind="src" output="target/test-classes" path="src/test/resources">

	</classpathentry>

发表评论

电子邮件地址不会被公开。 必填项已用*标注