Java 在mvn安装后将.properties文件与.class一起包含在JAR中

Java 在mvn安装后将.properties文件与.class一起包含在JAR中,java,maven-2,jar,package,Java,Maven 2,Jar,Package,假设我有一个我想用maven构建的项目。不幸的是,我的项目不尊重maven的默认布局。因此,我有两个源文件夹A&B,其中包含.properties文件和.java源文件 在mvn安装之后,我的.properties文件不会与我的.class生成的文件一起打包到jar中。如果有一种方法可以自动完成这项工作,您可能会建议使用标记来解决此类问题;这显然是可行的,我知道,但每次我都必须指定我的.properties文件的存储位置,以及我希望它们打包到JAR中的位置,这对我来说不是一个解决方案,因为我有多

假设我有一个我想用maven构建的项目。不幸的是,我的项目不尊重maven的默认布局。因此,我有两个源文件夹
A&B
,其中包含
.properties
文件和
.java
源文件

mvn安装之后
,我的
.properties
文件不会与我的
.class
生成的文件一起打包到jar中。如果有一种方法可以自动完成这项工作,您可能会建议使用
标记来解决此类问题;这显然是可行的,我知道,但每次我都必须指定我的
.properties
文件的存储位置,以及我希望它们打包到JAR中的位置,这对我来说不是一个解决方案,因为我有多个定期更新的源文件夹(数百个)

<resource>
        <targetPath>com\vermeg\jar2</targetPath>
        <filtering>true</filtering>
        <directory>${basedir}/a/jar2</directory>
        <includes>
          <include>*.properties</include>
        </includes>
        <excludes>
          <exclude>*.java</exclude>
        </excludes>
</resource>

com\vermeg\jar2
真的
${basedir}/a/jar2
*.物业
*.爪哇
对于每个源文件夹,我都要在我的POM中写这个,有人知道一种更简单的自动方式吗


关于,

通常,您可以使用Maven和来解决此类问题

例如,将pom编辑为:

<resource>
    <targetPath>${myresources.targetpath}</targetPath>
    <directory>${myresources.directory}</directory>
    ...
</resource>

${myresources.targetpath}
${myresources.directory}
...
并在命令行中使用
-Dname=value
或在条件配置文件中定义
myresources.directory
myresources.targetpath
,或使用生成中可用的其他属性


如果您解释您的项目结构和/或条件以及它们与变量(targetPath和directory)的关系,我可能可以为您的问题提供更多帮助。

请在父pom中指定一次,所有子项都应继承相同的设置…

是否无法更改为使用标准Maven布局,所有属性都在src/main/resources下的并行“包”层次结构中?然后你不需要指定任何东西;将打包所有.properties文件

如果您这样做,您将需要启用筛选,因为它在默认情况下处于关闭状态。您可能需要再次显式声明资源目录,因为当您声明它们时,这似乎覆盖了您“免费”获得的资源目录

对于多个源文件夹,多模块Maven项目可能是最合适的,a和B是一些新父项目的子项目

这看起来可能需要做很多工作,但Maven的约定是相当合理的,如果你违背它们,这往往是一个痛苦的经历