Maven项目在Eclipse中未被视为Java

Maven项目在Eclipse中未被视为Java,eclipse,maven,junit,aspectj,Eclipse,Maven,Junit,Aspectj,我正在做一个有很多不同Maven项目的项目。我已经在这些项目上做了一系列JUnit测试,通常进展顺利。我打开Eclipse,右键单击PackageExplorer->Import。。。现有的Maven项目,我可以很好地导入该项目。我可以构建,深入到src/test/java。。。右键单击该文件并执行runasjunit测试。不过,时不时地,我无法让它发挥作用。如果我右键单击以运行方式,我得到的只是AspectJ/Java应用程序。没有JUnit测试 我注意到项目文件夹旁边的图标只有一个M和一个文

我正在做一个有很多不同Maven项目的项目。我已经在这些项目上做了一系列JUnit测试,通常进展顺利。我打开Eclipse,右键单击PackageExplorer->Import。。。现有的Maven项目,我可以很好地导入该项目。我可以构建,深入到src/test/java。。。右键单击该文件并执行runasjunit测试。不过,时不时地,我无法让它发挥作用。如果我右键单击以运行方式,我得到的只是AspectJ/Java应用程序。没有JUnit测试


我注意到项目文件夹旁边的图标只有一个M和一个文件夹图标,而对于工作的项目,有一个文件夹M和一个AJ。我还注意到,它似乎不像普通Java项目那样将文件排序到它们的包中。似乎它没有将该项目视为AspectJ项目。如何让Eclipse将这个Maven项目识别为Java项目?

检查
pom.xml
文件中没有AspectJ特性(项目中的AJ)的项目。他们是否缺少AspectJ Maven插件?它们应该有一个类似以下的部分:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <!-- use this goal to weave all your main classes -->
          <goal>compile</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <complianceLevel>1.6</complianceLevel>
    </configuration>
</plugin>

org.codehaus.mojo

这取决于属性(如果您使用的是Java EE),我建议您右键单击项目属性,查看为您的项目定义的方面。

右键单击
项目
->
属性
项目方面
,然后选择适用于您的案例的所有方面(例如Java).

我和一位同事谈过,我能够“解决”这个问题。我从Eclipse(而不是从磁盘)中删除并立即重新导入Maven,现在它神奇地工作了


如果pom.xml有错误,尤其是父版本错误,那么maven项目似乎无法正确导入/创建。一旦我修复了POM中的问题,该项目将构建得很好,没有任何问题,但它仍然只是一个Maven项目。一旦我将其删除并重新导入,它就会将其视为Maven/AspectJ项目。

我面临同样的问题,下面的步骤解决了我的问题:

1-打开有问题项目的pom.xml

2-在overview选项卡中,检查工件/打包设置

3-如果设置为“pom”,则将其更改为“jar”

4-保存更改,然后仅从eclipse中删除项目并重新导入


希望有帮助

一些现有的答案应该有效,但是那些建议添加Java方面的答案只有在您的项目已经具有(或者您希望将其转换为)方面的性质时才有效,而建议您更改
pom.xml
的答案只有在您将项目作为maven项目重新导入时才有效

如果您想“修复”现有项目,即添加Java特性而不将其转换为刻面形式,也不删除和重新导入,只需编辑
.project
文件(外部,或使用eclipse中的Navigator视图,因为它不会显示在包资源管理器中)并将java builder和java nature添加到现有的maven builder/nature:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>yourprojectname</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <!-- add this build command -->
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <!-- this would've already been there -->
        <buildCommand>
            <name>org.eclipse.m2e.core.maven2Builder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <!-- add this nature -->
        <nature>org.eclipse.jdt.core.javanature</nature>
        <!-- this would've already been there -->
        <nature>org.eclipse.m2e.core.maven2Nature</nature>
    </natures>
</projectDescription>

你的项目名
org.eclipse.jdt.core.javabuilder
org.eclipse.m2e.core.maven2Builder
org.eclipse.jdt.core.javanature
org.eclipse.m2e.core.maven2Nature
注意不同的资本化(javabuilder但maven2Builder,javanature但maven2Nature)

一旦保存,它将自动重新生成。您可能需要手动添加任何源文件夹(
Project properties
->
Java构建路径
->
source
选项卡->
添加文件夹…

我遇到了同样的问题(将pom.xml导入eclipse后,该项目没有被视为Java项目,只有“maven Project builder”)在ProjectBuilders属性中,但在EclipseLuna中没有“JavaBuilder”)

删除“.settings”文件夹和“.project”文件后重新导入maven项目无效。
在工作区切换对我有效后重新导入。

将创建必要的.project文件,这些文件将向项目添加java特性和其他属性。

我的五美分。。。
在我的例子中,我总是“丢失”项目的“Java”性质,因为pom文件被设置为“打包为ear”。但是没有错误或警告消息,这将是一件好事。只要我将包更改为“jar”,我就可以将项目的性质设置为Java,并且它会被持久化。

我还尝试了我描述的所有方法仅修改.project是不够的,因为maven库将不用于构建项目,并且项目构建将失败。mvn eclipse:eclipse将在不实际使用m2e的情况下创建一个长而无用的.classpath

最简单的方法是创建一个新的java项目,将其转换为Maven项目,并为此新项目打开.project和.classpath。然后对导入的Maven项目进行类似的更改

已经描述了.project文件的重要更改,但是为了在Eclipse中使用Maven依赖项,类似的内容应该在.classpath文件中

<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>

在这种情况下,使用facets不是一个选项,因为对于facets,Eclipse不使用m2e和maven依赖项。同样,使用facets的依赖项必须手动管理


我用Eclipse4.6.2Neon尝试了所有这一切。

有两种方法可以实现这一点

1) 通过改变项目的性质。 右键单击项目->属性->项目性质,然后选择适用于您案例的所有性质(例如java)

(或)

2) 通过更新.project文件并添加
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>yourprojectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.wst.common.project.facet.core.builder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
                <buildCommand>
                        <name>org.eclipse.m2e.core.maven2Builder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
                <nature>org.eclipse.m2e.core.maven2Nature</nature>
        </natures>
</projectDescription>