Java Maven生成后缺少类文件

Java Maven生成后缺少类文件,java,eclipse,maven,jar,.class-file,Java,Eclipse,Maven,Jar,.class File,我在Windows10上使用Maven 3.3.9。我有一个多POM项目,我想在Maven项目中共享一些测试资源。我们都知道,src/test/*中的文件不会包含在分发jar中,所以我只为测试资源创建了一个单独的项目(以及附带的带有资源名称的Java类),这样我就可以在其他项目中共享这个项目 为了便于说明,假设foo-test项目中有两个文件: src/main/java/com/example/foo/test/FooTestResources.java src/main/resources

我在Windows10上使用Maven 3.3.9。我有一个多POM项目,我想在Maven项目中共享一些测试资源。我们都知道,
src/test/*
中的文件不会包含在分发jar中,所以我只为测试资源创建了一个单独的项目(以及附带的带有资源名称的Java类),这样我就可以在其他项目中共享这个项目

为了便于说明,假设
foo-test
项目中有两个文件:

  • src/main/java/com/example/foo/test/FooTestResources.java
  • src/main/resources/com/example/foo/test/resource.txt
直截了当,对吧?除了在Maven中构建项目时,生成的JAR文件只包含
com/example/foo/test/resource.txt
!缺少类文件,我希望它位于
com/example/foo/test/footeResources.class

事实上,他们发现这个文件甚至不在
target
目录中,所以就好像Maven甚至没有编译源文件一样。我在我的项目目录中搜索了
FooTestResources.class
,但它不存在。那里只有源代码文件
FooTestResources.java

当我在Eclipse4.6.3上构建项目时,Eclipse会按预期生成文件
target/com/example/foo/test/footeResources.class
。当我执行
mvn清洁安装时
它会消失


怎么回事?我找到了!故事是这样的

从前,我有一个项目需要两个罐子。一个JAR将包含源代码和大部分资源,另一个JAR将只包含一个资源。我没有创建两个项目(和两个Git存储库),而是尝试变得懒惰,创建了两个POM。一个POM正常构建除一个资源之外的所有资源,另一个…(你猜到了)忽略所有源文件并生成POM文件

您可以在此处阅读完整的技术细节:

由于种种原因,这并不是最易于管理的方法,因此我将这两个POM拆分为单独的项目存储库,因为它们本来应该是这样的

不幸的是,在这个过程中,我将其中一个POM中的关键行复制到了这个POM中

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <skipMain>true</skipMain>
                <skip>true</skip>
            </configuration>
        </plugin>

org.apache.maven.plugins
maven编译器插件
3.5.1
真的
真的
这个
skipMain
就是它的作用。
再见源文件。(显然Eclipse忽略了本节的细节。)


我也跳过了考试;我基本上是从错误的POM复制过来的,一个我已经没有的POM。

这是一些奇怪的东西。你能发布你的
pom.xml
?闻起来好像有些神奇的东西被eclipse构建器忽略了,所以区别就来了。在没有看到实际的pom.xml的情况下,我唯一的猜测是pom中有一些东西将源目录设置为其他目录。将
-X
添加到mvn命令中,查看它是否在
src/main/java
下编译任何内容。