2012-02-16 76 views
5

在几个项目中,我有一些我想共享的资源(特别是Flyway数据库迁移脚本)。可以Maven'导入'资源依赖?

是否有可能将这些共享资源作为Maven工件存在,并且在构建之前Maven解析该依赖关系并将工件内容解压到/src/main/resources/?如果是这样,一个人会怎么做呢?

回答

7

如果您在/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中。

+0

谢谢!如果依赖范围是'test',那么对于'/ src/test/resources'会有同样的效果吗? – 2012-02-16 13:31:20

+0

@Deejay:没有。你也不能从'/ src/test/java'中导入类,即使在使用'test'范围导入时也是如此。 – 2012-02-16 13:34:01

+0

你可以简单地把资源放在'test' artitact的'src/main/resources'中。 – carlspring 2012-02-16 14:38:43