我有一个 Maven 多模块 groovy 项目。当我在其中一个子模块中的 groovy 类中运行 main 方法时,intellij 在运行之前不会重新编译。当我手动启动 maven:compile 时,它总是运行上次编译的版本。我不记得过去必须手动执行此操作或设置任何特殊的 intellij 项目设置才能使其正常工作。
我尝试重新导入我的项目,对我的 pom 进行了几次更新,然后最终我不得不创建一个运行配置,在其中我指定了一个“启动前”配置,该配置首先执行 mvn compile。这似乎只是一个黑客。我不清楚我的问题是在一组构造不良的 pom 中,还是我真的错过了一些 intellij 配置。
这是第一次工作
class MyClass2 {
static void main(String... args) {
print("foo")
}
}
但是如果我添加另一个打印语句,例如打印 bar,程序的输出只打印 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 compile 和 mvn clean install 仅适用于父模块和所有子模块的文件。我从 MyClass2 引用 MyClass1 没有任何问题;依赖项似乎设置正确。