在多模块maven项目中指定公共资源

jil*_*t3d 28 java maven-2 maven-3 maven multi-module

有没有办法在Maven的父项目模块之间共享资源?例如,我想为多模块Maven项目中的所有模块指定一个log4j.properties文件.

通常,我使用Eclipse IDE通过选择一般项目来创建父项目,然后通过指定包装将其转换为Maven项目pom.这创建了一个"干净"的项目结构,没有src等文件夹.我想知道在这种情况下应该把这样的共享资源放在哪里.

EDIT1:我想将公共资源放在父项目中.

And*_*s_D 30

我创建了一个额外的"基础"模块(项目),打包"jar",其中包含公共资源src/main/resources.然后我会让其他模块依赖于该项目.现在他们看到了类路径上的公共资源.

  • 具有"pom"打包的父项目没有任何资源,它只是一个构建文件,可以作为工件安装/部署. (6认同)
  • 是的,这似乎是一种可能的解决方案。但是我很感兴趣是否可以在父项目中指定这些资源(而无需引入其他模块),因为父项目为子模块指定了所有常见的依赖关系和Maven配置,我认为父项目是最合适的地方也用于公共资源。 (2认同)

bor*_*jab 5

另一种可能性是使用远程资源包。您可以在父项目中配置它。在这个例子中,我想复制一些文件只是为了测试。如果您使用它,您将需要在另一个项目中创建捆绑包。

    <plugin>      
        <groupId>org.apache.maven.plugins</groupId>         
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.5</version>
        <configuration>
            <resourceBundles>
                <resourceBundle>es.sca:myBundle:1.0.0</resourceBundle>
            </resourceBundles>
            <attachToMain>false</attachToMain>
            <attachToTest>true</attachToTest>
            <appendedResourcesDirectory>${basedir}/src/test/resources</appendedResourcesDirectory>
        </configuration>            
        <executions>
            <execution>
                <goals>
                    <goal>process</goal>
                </goals>
            </execution>
        </executions>                   
    </plugin>                 
Run Code Online (Sandbox Code Playgroud)

  • 您可以分享“如何访问共享资源”的代码片段吗? (2认同)