Maven和Intellij的构建方式不同

时间:2015-03-13 13:15:40

标签: java maven intellij-idea dropwizard

我有父母pom。 当我在父母身上并写mvn clean install时,我的dropwizard应用程序构建正常。

然而,在Intellij中它失败了,因为找不到我的config.yml文件。

问题是我需要在Intellij中包含我的模块目录,而不是在Maven中。那是为什么?

正常运行mvn install

public static void main(String[] args) throws Exception {
    new CivilizationApplication().run(new String[]{"server", "src/main/resources/config.yml"});
}

在Intellij中我必须改为以下

public static void main(String[] args) throws Exception {
    new CivilizationApplication().run(new String[]{"server", "civilization-rest/src/main/resources/config.yml"});
}

如何配置Intellij,以便在不指定模块目录的情况下工作?

5 个答案:

答案 0 :(得分:3)

您可以尝试在运行配置中设置工作目录...

enter image description here

我还会查看您的pom.xml配置,看看您是否可以在导入maven项目时更改工作源集以使用此目录。

答案 1 :(得分:2)

Working directory设为$MODULE_DIR$。 Maven总是使用$ MODULE_DIR $,但是对于IntelliJ应用程序执行,你可能没有$ MODULE_DIR $。

enter image description here

答案 2 :(得分:0)

你可以告诉Intellij在你启动时完成Maven所做的一切。

您可以点击“启动应用”按钮旁边的下拉菜单。在那里,您可以通过单击左侧的+然后选择Maven来定义一个使用Maven的新运行配置。

然后你可以在clean install exec:java处输入“命令行”,它应该与从命令行手动执行它时的工作方式完全相同。调试也应该像这样工作,没有任何问题。

enter image description here

答案 3 :(得分:0)

这里的问题是您使用相对路径而不是使用类路径来引用资源文件。

所以,而不是

new CivilizationApplication().run(new String[]{"server", "src/main/resources/config.yml"});

你最好有这个

new CivilizationApplication().run("server", getClass().getResourceAsStream("config.yml"));

(显然,请务必更改#run()方法的签名)

答案 4 :(得分:0)

只是一个想法,但也许它与资源没有被复制。

我在OSX上,所以如果你在Windows上,确切的条款可能会有所不同,但对我而言......在首选项中,选择"构建,执行,部署",然后&# 34;编译器",并尝试添加&#34 ;;?*。yml"到资源模式。