【问题标题】:Can Maven 'import' resource dependencies?Maven 可以“导入”资源依赖项吗?
【发布时间】:2012-03-07 21:17:42
【问题描述】:

在多个项目中,我有一些希望共享的资源(特别是 Flyway 数据库迁移脚本)。

是否可以让这些共享资源作为 Maven 工件存在,并且在构建之前让 Maven 解决该依赖关系并将工件的内容解压缩到 /src/main/resources/?如果是这样,人们将如何处理?

【问题讨论】:

    标签: maven resources maven-resources-plugin


    【解决方案1】:

    如果您将一些文件放在/src/main/resources 中,它们将被放置在目标 JAR 工件的 CLASSPATH 中。这意味着如果您依赖这样的工件,您将可以访问所有资源,就像您可以访问其中的类一样。

    <dependency>
        <groupId>com.example.foo</groupId>
        <artifactId>my-resources</artifactId>
        <version>0.1</version>
    </dependency>
    

    如果my-resources 工件包含/src/main/resources 中的一些资源,您可以在运行时访问它们,就像您(或任何其他库)可以从同一工件访问/src/main/resources 内容一样。

    请注意,这不适用于 /src/test/resources,因为测试资源仅在 surefire 执行当前工件期间放置在 CLASSPATH 上。

    【讨论】:

    • 谢谢!如果依赖范围是test,那么/src/test/resources 是否也适用?
    • @Deejay:没有。您也不能从/src/test/java 导入类,即使使用test 范围导入也是如此。
    • 您可以简单地将资源放在您的test artitact 的src/main/resources
    • @carlspring:我想知道工件中的资源是否最终会出现在/src/test/resources/,因为我有一些用例,其中所述资源仅用于设置 JUnit 测试。
    • @Deejay 应该遵循 stackoverflow.com/a/12299238/1266906 在类路径的意义上工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2013-07-27
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多