我目前正致力于在Perforce上版本化Intellij Idea 12的非常规结构的maven项目。
主要来源目录是模块根目录中的src
,而不是src/main/java
。对于位于模块根目录中tests
目录而不是src/test/java
的测试源也是如此。
每当我制作maven clean compile
或使用Build->Rebuildproject
菜单时,我的所有更改都会反映出来。但是,如果我尝试使用"单一类编译" (Build->Compile
或Build->Make Project
菜单)或"制作"例如,在运行单元测试之前,当我对该编译的.class产品进行反编译时,它从不反映我所做的最后一次更改,而是上一次maven clean compile
或Build->Rebuildproject
编译产品。
我甚至尝试在启动单个类编译之前删除已编译的类,但它仍然是相同的行为。另外,当我启动"单一类编译"时,它会复制正在模块目标目录中编译的.java文件。
每当我做出改变时编译整个项目需要很长时间才能被视为可行的替代方案。
如何编译已更改的类?任何帮助都会非常感激。
编辑:我反编译了我编译的单元测试类,它与源目录中的版本有所不同。我在启动单元测试时也检查了类路径,MODULE_PATH/target/test-classes
和MODULE_PATH/target/classes
都是其中的一部分。因此,在目标中使用已编译的类启动单元测试。
答案 0 :(得分:3)
“非常规结构” - 我认为这是你的问题。
没有看到你的项目是不可能的,但我可以假设IntelliJ IDEA 12和13都表现得如预期的那样。你的假设没有得到满足;检查你的假设。
让Maven离开它并在没有它的情况下设置IntelliJ。