在maven中,如何在输出jar中的同一位置包含非java src文件?

Par*_*ife 43 jar maven

我收到了一个源代码包.在src目录树里面有一些属性文件(.properties),我想把它们保存在同一个地方的输出jar中.例如:我想要

src/main/java/com.mycompany/utils/Myclass.java 
src/main/java/com.mycompany/utils/Myclass.properties
Run Code Online (Sandbox Code Playgroud)

在罐子里保持不变:

com.mycompany/utils/Myclass.class 
com.mycompany/utils/Myclass.properties
Run Code Online (Sandbox Code Playgroud)

无需将属性文件添加到单独的资源文件夹中.有没有办法告诉maven?

Rag*_*ram 64

您可以在pom中添加以下内容,指示资源可用src/main/javaincluding资源类型.

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
            </includes>
        </resource>
    </resources>
</build>
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,对于那些刚接触maven的人来说,资源节点如果尚未存在则位于<build>节点下. (32认同)
  • 如果你将它们放在**src/main/resources**中,它们默认包含在内. (19认同)
  • ...如果你把它们放在src/main/resources中,你可能需要设置一个像src/main/resources/com/mycompany/utils这样的文件夹结构 (2认同)

Eri*_*ten 14

使用这个pom片段,您可以包含任何不是main文件和测试工件的java文件:

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>
    <testResources>
        <testResource>
            <directory>src/test/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
    </testResources>
</build>
Run Code Online (Sandbox Code Playgroud)