OS: Windows 7 x64
Eclipse 平台:3.7.2.M20120208
手机2E: 1.0.200.20111228-1245
有与此错误类似的问题。/src
和 /test
文件夹中有一堆 package-info.java
文件,因此它们具有相同的包。日食显示错误:
"The type **package-info** is already defined"
我可以删除/test
或/src
中的package-info.java
文件,以避免问题指示。但是这种解决方法不是很舒服,因为我使用的是SCM,需要在更新后一直删除此文件。Eclipse Platform 4.2.0.I20120608-1400 相同
你可以这样做 -->
转到生成路径 -> 配置生成路径 -->
在"源"选项卡中 -->
选择包(其中有这些有问题的包信息.java文件)例如。project-name/src/test/java
单击排除 -> 并在排除模式中添加"**/包信息.java"
这应该可以解决问题,因为很明显,您要求Eclipse排除这些文件,因此您不必删除这些文件并解决与SCM相关的问题
有几个选项可以解决这个问题:
- 远离包信息.java文件,并将它们替换为包.html文件。
- src/树中只有包信息.java文件,因为测试/树中同名的包将"重叠"src/树。
- 分别为 src/和 test/树生成 javadoc,因为它们可能适用于不同的受众。
m2e 进行 eclipse 和 maven 之间的交互。有一个非常干净的解决方案:向pom添加一个配置文件.xml该配置文件仅由m2e激活,并在测试编译阶段防止编译包信息.java。这里有一个示例:
<profile>
<id>m2e</id><!--This profile is activated when eclipse interacts with maven (using m2e).-->
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<!--eclipse do not support duplicated package-info.java, in both src and test.-->
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<configuration>
<testExcludes>
<exclude>**/package-info.java</exclude>
</testExcludes>
</configuration>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>