繁体   English   中英

Maven和Intellij的构建方式不同

[英]Maven and Intellij builds differently

我有一个父母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,这样它就可以在不指定模块目录的情况下工作?

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

在此处输入图片说明

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

Working directory设置为$MODULE_DIR$ Maven始终使用$ MODULE_DIR $,但是默认情况下您可能没有$ MODULE_DIR $用于IntelliJ Application执行。

在此处输入图片说明

您可以告诉Intellij启动Maven时完全相同。

您可以通过单击“启动应用程序”按钮旁边的下拉菜单来实现。 您可以在此处定义新的使用Maven的运行配置,方法是单击左侧的+,然后选择Maven。

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

在此处输入图片说明

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

所以,代替

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

你最好有这个

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

(显然,还要确保也更改#run()方法的签名)

只是一个想法,但可能与资源未被复制有关。

我使用的是OSX,因此如果您使用的是Windows,则确切的术语可能有所不同,但对我而言...在“首选项”中,选择“构建,执行,部署”,然后选择“编译器”,然后尝试添加“;?*。yml”资源模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM