Maven项目在Eclipse中没有被视为Java

时间:2012-01-17 16:11:24

标签: eclipse maven junit aspectj

我正在开发一个有很多不同Maven项目的项目。我一直在对这些项目进行一系列JUnit测试,通常这很顺利。我打开Eclipse,右键单击包explorer->导入...现有的Maven项目,我能够很好地导入项目。我可以构建,深入到src / test / java ...右键单击该文件并执行Run As JUnit测试。不时,我不能让这个工作。如果我右键单击以执行运行方式,我得到的只是AspectJ / Java应用程序。没有JUnit测试。

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

14 个答案:

答案 0 :(得分:33)

现有的几个答案应该有效,但那些建议添加Java facet的人只有在你的项目已经(或者你想将其转换为)分面的性质时才会起作用,而那个建议你改变你的{{ 1}}只有在您将项目重新导入为maven项目时才会起作用。

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

.project

注意不同的大小写(javabuilder但是maven2Builder,javanature但是maven2Nature)。

保存后,应自动重新构建。您可能需要手动添加任何源文件夹(<?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> - &gt; Project properties - &gt; Java Build Path标签 - &gt; Source

答案 1 :(得分:12)

右键点击Project - &gt; Properties - &gt; Project Facets,然后选择适用于您案例的所有方面(例如java)。

答案 2 :(得分:6)

mvn eclipse:eclipse 将创建必要的.project文件,这些文件将添加java nature&amp;项目的其他属性

答案 3 :(得分:4)

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

答案 4 :(得分:4)

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

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

2 - 在Overview选项卡中,检查Artifact / Packaging设置。

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

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

希望有所帮助!

答案 5 :(得分:3)

我面临同样的问题(在将pom.xml导入eclipse之后,该项目不被视为java版本,并且项目构建器属性中只有“maven项目构建器”,但在eclipse中没有“java builder”) luna的。

删除“.settings”文件夹和“.project”文件后重新导入maven项目不起作用。 在工作区切换为我工作后重新导入。

答案 6 :(得分:1)

检查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>

另请查看他的问题:Maven/AJDT project in Eclipse

答案 7 :(得分:1)

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

似乎pom.xml出现错误,特别是如果父版本错误,maven项目无法正确导入/创建。一旦我解决了POM中的问题,项目就可以很好地构建而没有任何问题,但它仍然只是一个Maven项目。一旦我删除它并重新导入它,那么它将它视为Maven / AspectJ项目。

答案 8 :(得分:1)

我知道这个问题是很久以前的...

我只是通过以下两个步骤解决了这个问题。

  1. 在项目的根目录中运行cmd“ mvn eclipse:eclipse”
  2. 右键单击Eclipse中的项目,然后选择“导入为项目”

答案 9 :(得分:0)

我的五美分...... 在我的情况下,我失去了&#39;始终是Java&#39;项目的性质,因为pom文件被设置为&#39; package as ear&#39;。没有错误或警告消息,这将是很好的。一旦我将包装改为&#39; jar&#39;我可以将项目的性质设置为Java并且它是持久的。

答案 10 :(得分:0)

我也尝试过这个帖子中描述的所有方法。仅修改.project是不够的,因为maven库不会用于构建项目,项目构建将失败。 mvn eclipse:eclipse会创建一个长而无用的.classpath而不会实际使用m2e。

最简单的方法是创建一个新的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>

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

我用Eclipse 4.6.2 Neon尝试了所有这些。

答案 11 :(得分:0)

有两种方法可以实现。

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

(OR)

2)通过更新.project文件并添加项目所需的所有性质。该.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> 

答案 12 :(得分:0)

我有同样的问题。就我而言,这是蚀工作区中的一些缺陷。我重新创建了它(删除了.metadata目录),并解决了该问题。

答案 13 :(得分:0)

如果您已在.project上尝试过Amos M. Carpenter的解决方案,但无法使用,请转到Project-> Properties-> Project Nature并添加... Java,Apply和Close按钮。