2013-03-12 50 views
6

我有一个intellij-idea的奇怪问题。在我的java程序中运行一些主函数时,intellij会创建一个名为out的目录来存储类文件以及其他一些内容。Intellij递归嵌套输出目录

它创建的目录结构如下

<PROJECT_ROOT>/out/production/<PROJECT_NAME>/ 

没什么奇怪的存在,但是,当我再次运行里面的IntelliJ程序,它创建的目录,这样的结果内的新out目录结构相同如下

<PROJECT_ROOT>/out/production/<PROJECT_NAME>/out/production/<PROJECT_NAME>/ 

那么如果我再次运行它嵌套另一个!

<PROJECT_ROOT>/out/production/<PROJECT_NAME>/out/production/<PROJECT_NAME>/out/production/<PROJECT_NAME>/ 

等等...

这是非常令人沮丧的行为,至少可以说。我认为这可能是我的环境(Windows),所以我在我的Linux机器上设置了项目,并观察到相同的行为。我从git repo中克隆了这个项目,但我不认为这会是原因。我注意到我在克隆的不同项目中也有同样的行为。

我的下一步是在每个环境中从零开始创建两个完全不同的项目,并查看是否可以通过这种方式重现问题。一旦我尝试过与其他任何事情一起尝试后,我会更新这篇文章,但我认为我会在这里发帖,同时继续解决问题,以防其他人看到此行为并知道解决方案。

我会随时更新。任何“想法”(看看我在那里做什么;)或建议表示赞赏!

UPDATE 从头开始创建在Linux中一个Hello World PROG没有重现行为。

UPDATE在Windows中从头创建一个Hello World PROG没有重现行为。

回答

7

我能够重现这一点。当基本模块也是src根时,IntelliJ将以这种方式运行。如果你将基本模块取消为src root,然后创建一个src目录来放入你的源文件,你会注意到在下一次编译时,整个目录结构会被吹走,IntelliJ会回到合理的行为。

+0

更一般地说,如果类输出目录位于标记为src,test或resource的目录中,并且未被排除,则会发生这种情况。由于我们给IDE的递归定义,推测输出目录会被复制到自身中,然后下一次编译输出目录及其子目录时,它们将被复制到输出目录中。等等。 – MilesHampson 2016-07-12 06:13:55

+0

我遇到了同样的问题,但是从我所说的无法解决的问题...我在哪里可以找到基本模块,以及如何将它取消为src根目录? – 2017-05-06 12:29:59