生成所有项目的源并更新文件夹

时间:2019-02-25 14:51:39

标签: git maven intellij-idea ide

有一个与我的标题完全一样的IntelliJ命令:为所有项目生成源文件和更新文件夹。那是做什么的?我可能会犯一个巨大的错误,在问该怎么做之前先单击它。现在运行了半个多小时。不会停下来,我太害怕停下来了。

我想做的是切换到另一个GIT分支,但是工作区自身崩溃了,并导致了一些构建错误,所以我想我会点击所有看起来像recycle icon的东西。因此,我在Maven面板上按下了此按钮:Generate Sources and Update Folders For All Projects

它有什么特别的吗?显然,它的工作时间比

长得多
mvn clean install -DskipTests

我还需要什么?实际上,到目前为止,我什至不需要任何其他东西。

ps。 (它现在已经完成了,但是我仍然很好奇该功能的真正含义。)

2 个答案:

答案 0 :(得分:0)

根据IntelliJ IDEA Maven FAQ

  

为了获得自动导入为源的生成源   文件夹配置相应的插件,以便将它们放入   目标/生成源/,其中subdir是您的任何文件夹名称   喜欢。 subdir文件夹对于区分来源与   不同的工具,并排除一些特殊生成的源   (例如groovy存根)。

     

请注意,即使您手动配置某些源文件夹   在此文件夹本身的目标/生成源下,IDEA将   根据您的pom.xml重写它们。

     

每次您要生成源时,只需执行   对应于生成的目标(通常是生成源,   生成测试源)。之后,IDEA将选择新文件夹并   设置它们。

Maven docs

  

让我们通过一个简短的例子来尝试和帮助。产生来源   您必须首先拥有一个参与generate-sources的插件   相像ANTLR4 Maven插件。

     

所以一切都很好,我们有一个想要生成的插件   一些来自Antlr4语法的资料,但是我们如何使用它。你需要   指定要在POM中使用它:如果输入mvn   编译Maven将遍历生命周期,并最终实现   在generate-sources阶段,看到您配置了一个插件   想参与该阶段,而ANTLR4 Maven插件是   使用给定的配置执行。此外在编译过程中   您可以观察到所有生成的代码(来自语法文件)   会自动进行编译而无需补充配置。

您会看到 Generate Sources 操作为您的generate-sources中任何会生成任何源代码的插件运行pom.xml Maven阶段。

答案 1 :(得分:0)

关于生成源代码的事情是它既是一个预构建任务(以便 IntelliJ 可以访问那些生成的源代码以进行 linting 等)和一个 构建 任务(因为这些源不在源代码管理中,需要在每次构建时生成)。 所以 IntelliJ 有这个按钮来生成源和更新文件夹,而 Maven 在其默认生命周期中有一个 generate-sources 阶段。他们几乎做同样的事情。

无论是否生成了源代码,IntelliJ 都需要知道从哪里导入。你可以在这里设置

File | Settings | Build, Execution, Deployment | Build Tools | Maven | Importing

当您构建项目时,Maven 会生成源代码,但 IntelliJ 仍然不知道它应该导入它们。这就是按钮具有两个动作合二为一的原因。或者,您可以右键单击 target/generated-sources 目录并选择“将目录标记为 > 生成的源根目录”。它应该变成蓝色。但是使用按钮更好,因为它将使用您的源代码生成插件中配置的任何自定义目录(前提是您的导入配置为“自动检测”)。

生成源和更新文件夹操作不会出现在构建输出事件日志中,但它会在后台任务窗口。如果你想看看它做了什么,打开你的~/.cache/JetBrains/IdeaIE2021.1/log/idea.log文件版本。 IntelliJ 似乎直接调用了源代码生成插件(在生命周期之外)。

请注意这些未解决的问题: