Maven子模块中的Groovy Main方法在运行前不会自动编译

时间:2019-06-27 03:02:48

标签: intellij-idea groovy gmavenplus

我有一个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没有问题;依赖项似乎已正确设置。

1 个答案:

答案 0 :(得分:0)

确认已在“运行配置”的Before launch部分添加了构建步骤:

enter image description here