当前位置: 首页 > 知识库问答 >
问题:

为什么需要将目标文件夹设置为源文件夹?当“target”没有实现时,第一次是如何编译项目的?

宇文卓
2023-03-14

我有一个现有的maven项目(IDE使用:Sprint测试工具),但我对它的帮助非常有限。我对maven、java和其他东西都是新手(我知道基本的java,用java做过自动化工作,但还没有从事过成熟的java项目),我必须自己或多或少地了解这个项目。我曾试图编译该包,但它在main\src\java中显示了错误,即“消息无法解析”,而这类代码是:Messages。。我搜索了文件夹,发现只有一条消息。项目中“目标”文件夹的子文件夹中的java文件(其中包含该方法定义)。因此,我被要求将此子文件夹的路径/文件夹添加为源文件夹,错误消失了。

我相信整个“目标”是在编译/打包maven项目时创建的。并且,向源文件夹添加路径会索引路径并使其可用于兼容/打包。所以,我想知道项目最初是如何编译和打包的。我确实在src\main\Resources\folders...\Messages.properties中看到了Messages.properties,Messages.java中定义的方法似乎与此属性文件有一些关系。

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

共有1个答案

蓝逸仙
2023-03-14

您提供的信息有点稀疏,因此如果您可以提供pom的一个片段,这将有所帮助。xml文件-特别是<代码>

Maven动态创建目标目录来存储构建的输出,这是正确的,因此其内容中没有任何内容应该与构建相关。

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

假设消息。生成java,然后解决方案是将其放在src/main/gen目录中,并将该目录添加到构建路径中(并删除目标)。

清理选项:可能不可能

如果您可以找出哪个插件正在创建Messages.java,并且可以修改其输出路径,那么这是最简单的选择-重新配置它以写入src/main/gen/而不是目标/

肮脏但可靠的选择

可能出于任何原因,上述方法都不可行。然后简单地复制消息。在pom文件的预编译阶段,java文件从目标到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>

希望这有帮助。

 类似资料:
  • 我是JUnit测试的新手 我有一个maven项目,它在执行时在目标文件夹中创建文件 在我的程序中,我得到这两个文件并修改它们。现在我必须为修改这两个文件的方法编写一个JUnit测试。当然,当我开始测试时,目标文件夹还不存在。 这种情况的最佳做法是什么?我可以创建一个“test-target”文件夹并用文件填充它吗?

  • 我想把我所有的java项目(223个项目)迁移到gradle项目。我使用Gradle Eclipse插件,由SpringSource STS团队开发。 目前,我所有的java项目都是这样结构的: src/log、src/tools/core、src/tools/graph、src/tests和src/someModule是java源文件夹。 将项目转换为gradle后(通过配置- 此外,问题是ja

  • 我尝试通过maven->clean和project->clean来清理我的项目,但没有效果。我尝试在构建路径下显式更改输出文件夹,但不确定为src/test/java选择什么 并且我得到了在类路径错误中找不到TestNG类: 早些时候,这段代码运行良好。我只是尝试通过更改maven项目的工件id来调整项目,然后就无法继续了。

  • 但我怎么能这样做呢?fxml文件必须放在主目录文件夹还是资源文件夹的哪个位置?如果我使用场景构建器改变一个的数据,另一个也会改变吗?我需要在porn.xml中添加这个maven resources插件吗?下面是一些照片: 主体工程 在尝试fx:controller之前,将资源文件夹中的balanceus.fxml Github 感谢任何帮助,也为我的英语(不是我的第一语言)的糟糕感到抱歉。

  • 伙计们! 我是TestNG的新手,我正在用Maven(Surefire插件)和Eclipse进行尝试。 当我的测试由Maven运行时,它的报告会按预期放在target/surefire-reports上,但同样的测试由Eclipse TestNG插件运行时,我希望它们也放在target子文件夹中(因此,由clean Maven goal清理,由git忽略,这并不是为了尊重Maven文件夹组织),但