maven编译问题:maven编译成功,eclipse文件未编译

  我们先来看一个正常的编译流程:

1、从svn上检出一个项目;

2、看该工程是否为maven项目,不是则先转为maven项目:右键单击项目,选择configure->Convert to Maven project

3、用maven编译该项目:右键单击项目,选择Run As->Maven install

  以上流程做完,maven打包成功,那么恭喜你,你检出的项目已经可以发布,代码已经编译。但我遇到的问题是,执行Maven install没问题,编译动作也执行了,到输出目录targetclasses下也有编译后的class文件,但在eclipse下就是没有编译过的java文件,java图标是空心的。反复折腾了许久,均无法解决问题。比如:右键单击项目,选择properties->Project Facets,选择java后,才能在右键单击项目选择Build Path,然后配置依赖的jar,但无法加载Maven Dependencies,编译是可以了,但全是红叉,漫山遍野的红叉。

  最后分析了下,我从svn检出的是一个项目包叫pilingservice,它除了带有pom.xml文件之外,就是4个目录,而这4个目录其实就是4个子项目,他们也都带有各自的pom.xml,结构如下:

pilingservice

    |———— piling-api

    |———— piling-client

    |———— piling-core

    |———— piling-war

    |———— pom.xml

  我正常编译的时候其实跑的是pilingservice下的pom.xml,它里面的配置如下:

    <modules>
        <module>piling-api</module>
        <module>piling-core</module>
        <module>piling-war</module>
        <module>piling-client</module>
    </modules>

  右键单击pilingservice项目,选择Run As->Maven install,会根据pilingservice的pom文件去编译piling-api、piling-client、piling-core和piling-war这4个子项目,然后输出他们编译后的包,但是eclipse里这4个子项目的java文件仍是未编译的(java文件图标是空心的)。如果我不是整个pilingservice检出,而是单独检出piling-api,按正常流程编译,java文件的图标是实心的,因为这时候跑的是piling-api项目自己的pom文件。其他子项目也是一样的。

  根据eclipse检出时的情况看(见下图),只有pilingservice是maven项目,子项目都还不是:

  解决办法有两个,一个是不要通过eclipse的SVN插件检出,直接从本地SVN检出,然后通过File -> Import导入到eclipse,并且导入方式选择Maven -> Existing Maven Projects;一个是从eclipse的SVN检出后,右键点击Services项目,选择Import -> Maven -> Existing Maven Projects -> 选择所有子项目,点击finish,按正常编译后如下图:

原文地址:https://www.cnblogs.com/wuxun1997/p/6679203.html