想象一下,我有一个我想用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中写入此内容,是否有人知道更简单的自动方式来执行此操作?
此致
答案 0 :(得分:0)
通常,您可以使用Maven properties和profiles来解决此类问题。
例如,将您的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的惯例是相当合理的,如果你反对它们,它往往是一种痛苦的经历。