Java 为什么我需要将目标文件夹设置为源文件夹?当“目标”不可信时,第一次是如何编译项目的?

Java 为什么我需要将目标文件夹设置为源文件夹?当“目标”不可信时,第一次是如何编译项目的?,java,eclipse,spring,maven,Java,Eclipse,Spring,Maven,我已经使用了一个现有的maven项目IDE:Sprint测试工具,我对它的帮助非常有限。我不熟悉maven、java和其他东西,我了解基本java,并用java实现了自动化,但还没有参与过成熟的java项目,我必须自己或多或少地了解我们所有的项目。 我试图编译这个包,但它在main\src\java中显示了一些错误,消息无法通过这种代码解析:Messages。。我搜索了所有文件夹,发现项目中目标文件夹的子文件夹中只有一个Messages.java文件,其中包含该方法定义。因此,我被要求将此子文件

我已经使用了一个现有的maven项目IDE:Sprint测试工具,我对它的帮助非常有限。我不熟悉maven、java和其他东西,我了解基本java,并用java实现了自动化,但还没有参与过成熟的java项目,我必须自己或多或少地了解我们所有的项目。 我试图编译这个包,但它在main\src\java中显示了一些错误,消息无法通过这种代码解析:Messages。。我搜索了所有文件夹,发现项目中目标文件夹的子文件夹中只有一个Messages.java文件,其中包含该方法定义。因此,我被要求将此子文件夹的路径/文件夹添加为源文件夹,错误消失了

我相信整个目标是在编译/打包maven项目时创建的。并且,将路径添加到源文件夹会对路径进行索引,并使其可用于遵从/打包。所以,我想知道这个项目最初是如何编译和打包的。 我确实在src\main\resources\folders..\Messages.properties中看到Messages.properties以及Messages.java中定义的方法似乎与此属性文件有某种关系

我在网上搜索,但找不到答案。请帮我一下好吗?
提前感谢。

您提供的信息有点稀疏,因此如果您可以提供pom.xml文件的一个片段,特别是从顶层提供项目的部分和目录结构,特别是这些消息文件的位置,这会有所帮助

您是正确的,目标目录是由Maven动态创建的,用于存储构建的输出,因此其内容中的任何内容都不应该是构建的依赖项

最有可能的情况是,您的构建有某种代码生成器,可能是在编译阶段之前运行的Ant任务或Maven插件,这就是生成您所依赖的Messages.java文件的原因

假设生成了Messages.java,那么解决方案是将其放在src/main/gen/目录中,并将该目录添加到构建路径中并删除目标

清除选项:可能不可能

如果您能够确定哪个插件正在创建Messages.java,并且可以修改其输出路径,那么这就是最简单的选择——将其重新配置为写入src/main/gen/而不是target/

肮脏但可靠的选择

无论出于何种原因,上述方法都不可行。然后,在pom文件的预编译阶段,只需将Messages.java文件从target/复制到src/main/gen/:

<plugin>
    <groupId>mojo.codehaus.org</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
        <executable>cp</executable>
        <arguments>
            <argument>target/Messages.java</argument>
            <argument>src/main/gen/Messages.java</argument>
        </arguments>
    </configuration>
</plugin>
希望有帮助。

请提供pom.xml文件的部分。您是正确的,一般来说,target/dir是由Maven生成的,用于存储构建输出,因此不应该是构建的依赖项。