我有一个Maven多模块常规项目。当我在一个子模块之一的groovy类中运行main方法时,intellij在运行之前不会重新编译。它总是运行我手动启动的maven:compile时最后编译的版本。我不记得必须手动执行此操作或过去要对其进行任何特殊的intellij项目设置。
我尝试重新导入我的项目,对poms进行几次更新更新,然后最终我不得不创建一个运行配置,在其中指定一个“启动前”配置,该配置首先执行mvn编译。不过,这似乎只是一个hack。对于我来说,这是因为我的问题出在结构不良的poms中还是真的缺少某些intellij配置,对我来说还不清楚。
这是第一次工作
class MyClass2 {
static void main(String... args) {
print("foo")
}
}
但是如果我添加另一个打印语句,例如打印栏,则程序的输出仅打印foo,而不打印foo和bar。
class MyClass2 {
static void main(String... args) {
print("foo")
print("bar")
}
}
我的模块结构是这样的:
my-project
module-1
src/main/groovy/com/foo/MyClass2.groovy (Depends on Module1)
module-2
src/main/groovy/com/foo/MyClass1.groovy
此子模块的pom文件具有以下构建部分:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
如果问题根源于此,我可以添加更多pom配置,或者提供intellij配置的屏幕截图。我怀疑intellij是问题的根源,因为mvn编译和mvn全新安装仅在父级以及所有子模块中起作用。我从MyClass2引用MyClass1没有问题;依赖项似乎已正确设置。