Java Maven生成后缺少类文件
我在Windows10上使用Maven 3.3.9。我有一个多POM项目,我想在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
src/test/*
中的文件不会包含在分发jar中,所以我只为测试资源创建了一个单独的项目(以及附带的带有资源名称的Java类),这样我就可以在其他项目中共享这个项目
为了便于说明,假设foo-test
项目中有两个文件:
src/main/java/com/example/foo/test/FooTestResources.java
src/main/resources/com/example/foo/test/resource.txt
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
下编译任何内容。