Maven:如何将资源文件与jar包放在一起?

34

我有一个 \src\main\resources\logback.xml 文件。当我运行 mvn package 时,默认情况下它会被放到jar文件中。我如何让Maven将其放在jar旁边,而不是内部?

因此,我只想让Maven将该资源复制到与jar文件相同的文件夹中。

3个回答

86

不需要任何插件定义,只需编辑构建资源:

<build>
    <resources>
        <!-- regular resource processsing for everything except logback.xml -->
        <resource>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>logback.xml</exclude>
            </excludes>
        </resource>
        <!-- resource processsing with a different output directory
             for logback.xml -->
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>logback.xml</include>
            </includes>
            <!-- relative to target/classes
                 i.e. ${project.build.outputDirectory} -->
            <targetPath>..</targetPath>
        </resource>
    </resources>
</build>

参考资料:


资源正在被复制的哪个阶段?在我的情况下,我使用maven-dependency-plugin将一个war文件复制到依赖项目中 - 从那里我希望它被加载到最终的.jar中,但我想保证我始终获取该war文件的最新构建版本。顺便说一句:第一个链接似乎已经失效了。 - Stefan Falk
@displayname 固定链接。而 process-resources 是您要查找的阶段。 - Sean Patrick Floyd
您好,我该如何将资源文件夹中的文件放置在最终 JAR 包的 src/main 目录下? - GOXR3PLUS
@GOXR3PLUS 将 <resource><targetPath> 设置为您想要复制资源的目标路径。请参阅文档 - Sean Patrick Floyd
注意:移除spring-boot插件,否则它会在BOOT_INF文件夹内创建文件。 - Chinmoy
显示剩余2条评论

0

您可以使用Maven Assembly插件构建包含两者的ZIP文件。

您还可以使用Maven Antrun插件或类似工具来放置任何文件,但是每个项目单一构件的理念已经深入融入了Maven内部,因此有可能在其他地方出现问题。


我想把它们放在一起 - 资源文件放在 jar 文件的旁边。 - Vladislav Rastrusny

0

我只是想使用Maven作为一个完全强大的构建系统,以便在单击一下即可生成我需要部署的所有内容 ;) - Vladislav Rastrusny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接