【问题标题】:Editing runtime classpath in IntelliJ to include src/main/config在 IntelliJ 中编辑运行时类路径以包含 src/main/config
【发布时间】:2013-01-24 08:13:19
【问题描述】:

我使用 Maven 和 Spring 在 IntelliJ 12 中编写了一个 Java 应用程序。我有以下文件夹:

src/main/java:用于 Java 代码

src/main/resources:用于将资源打包到最终构建的 JAR 中

src/main/config:用于外部资源,即spring配置文件。

我尝试将 src/main/config 设置为源文件夹,但是,在运行我的应用程序时,它失败并在以下行出现 FileNotFoundException:

new ClassPathXmlApplicationContext("spring-config.xml");

spring-config.xml 位于 src/main/config 内。

另外,我注意到这个文件没有被复制到 intelliJ 在“Make”构建项目时生成的目标目录中。

现在我使用 FileBasedApplicationContext 进行测试,但是如果能够从 intelliJ 中运行应用程序而无需编辑代码,那就太好了。

谢谢

【问题讨论】:

  • 看来这应该可行。也就是说,按照惯例,我会使用 src/main/resources,这是标准的 Maven 配置目录,从词法上讲,因为它不是外部资源:它位于类路径中。如果它仅用于测试,那么它属于测试目录,如果它仅用于在 IntelliJ 中运行,我将通过运行配置指定它并使用简单的自定义配置器。

标签: java intellij-idea classpath


【解决方案1】:

my comment here。资源目录/模式必须在 pom.xml 文件中明确定义,如下所示:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
        <resource>
            <directory>src/main/config</directory>
        </resource>
    </resources>
</build>

【讨论】:

  • 你根本没有回答我的问题。我正在尝试构建项目。我想在 intelliJ 中运行我的应用程序,以便调试它。在 maven 构建方面,我将使用程序集插件创建一个包含构建的 JAR、它的依赖项和这个外部 spring 文件的包。
  • IDEA 构建使用 Maven 信息来找出它应该包含在类路径中的文件。如果您的 pom 以某种不寻常的方式或 IDEA 尚不支持的方式定义资源,它将无法工作。解决方法是 disable external build 在这种情况下 IDEA 将使用 Settings | Compiler | Resource Patterns 从源文件夹复制其他文件。但这是一种技巧,您应该避免并改为描述 pom 文件中的所有资源。
  • 基于 gradle 的项目是否有任何修复。我的根本不包括资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
  • 2012-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多