在mvn安装之后,在JAR中包含.properties文件和.class

时间:2010-12-15 16:16:07

标签: java maven-2 jar package

想象一下,我有一个我想用maven构建的项目。遗憾的是,我的项目不尊重maven默认布局。所以我有两个源文件夹A & B包含.properties.java个来源的文件。

mvn install之后,我的.properties文件未打包在包含.class生成的<resources>文件的jar中。有没有办法自动执行此操作,您可能建议使用.properties标记来解决此类问题;这显然对我知道,但我必须每次都指定我的<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> 文件的存储位置,以及我希望它们在JAR中打包的地方,这对我来说不是一个解决方案,因为我有多个来源文件夹(数百个)定期更新。

{{1}}

对于每个源文件夹,我是否会在我的POM中写入此内容,是否有人知道更简单的自动方式来执行此操作?

此致

3 个答案:

答案 0 :(得分:0)

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

例如,将您的pom编辑为:

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

并使用myresources.directory或在条件配置文件中或使用构建中可用的其他属性在命令行中定义myresources.targetpath-Dname=value

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

如果您这样做,则默认情况下您需要启用过滤功能。您可能必须再次显式声明资源目录,就像您声明它们时一样,这似乎会覆盖您“免费”获得的目录。

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

这可能看起来相当多,但是Maven的惯例是相当合理的,如果你反对它们,它往往是一种痛苦的经历。