Maven编译不会生成类文件。

11

我有一个带有父POM的3个模块的Maven项目。当我从父级运行maven clean-compile-test时,它在测试阶段失败,并给出了大量的编译错误,说我的本地类“符号未找到”。

我发现使用IntelliJ ide,如果我在运行maven测试之前使用“Make Project”按钮那么maven测试就可以工作了!

编辑:现在我发现问题是maven编译由于某种原因没有在目标文件夹中创建类文件,这是我在父POM文件中的maven编译器插件配置:

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>

                <source>1.6</source>
                <target>1.6</target>
                <excludes>
                    <exclude>**/*.*</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>

</build>

有任何想法吗?


如果您能发布您的pom.xml文件,那么帮助您将会更加容易。 - DanielBarbarian
可能有快照依赖更新包含缺失的类吗? - Uwe Allner
@Uwe Allner 我更新了问题。 - Spring
2个回答

23

还有一件事。

看一下 pom.xml 文件,标签 <packaging>。如果它被设置为 pom,Maven 将不会为您创建 class 文件。将其更改为适当的打包方式 - jarwar 等。


8
Maven在package阶段不会关心缺失的符号;只有在compile阶段(即Maven运行Java编译器时)才会报告缺失的符号。
要找出为什么无法找到这些符号,您需要检查其中一个错误。查看target文件夹并检查缺失的类是否存在于其中(位置正确)。 mvn clean会删除此文件夹,但是mvn compile应该会在其中放置新文件。
如果您看不到任何明显的问题,则请将target文件夹中的所有文件列表保存在某个地方。然后在IDEA中构建项目。再次创建所有文件的列表。
对两个列表进行排序,然后进行比较。这可能会让您知道问题出在哪里。我猜测您以奇怪的方式配置了Maven(移动源文件或目标文件夹)。 编辑 配置
<excludes>
    <exclude>**/*.*</exclude>
</excludes>

告诉Maven“忽略所有源文件”,相当于“什么也不做”。请删除此项并重试。

谢谢,清理编译工作正常,问题出现在Maven测试中。一个测试类找不到其他Java类并给出符号未找到错误。 - Spring
编译不会在目标文件夹中创建类,但“构建项目”会创建,我的Maven编译插件没有配置好? - Spring
谢谢,这很尴尬! - Spring
你能否也看一下这个问题?谢谢。http://stackoverflow.com/questions/23541364/maven-can-not-create-javadocs - Spring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接