假设我有一个名为com.example的Java项目:awesome-project,它有一个名为com.external的依赖项:awesome-library。
如果这个awesome-library有像configuration.xml这样的资源,我如何过滤这个资源,以便在我在项目代码中使用它之前正确替换Maven属性占位符?
例如,<tag name="${groupId}:${artifact}">
之类的内容需要更改为<tag name="com.example:awesome-project">
。
假设:
答案 0 :(得分:2)
使用dependency:unpack,它会提取资源,默认情况下为${project.build.directory}/dependency
(如果需要,可以更改)。
然后,要么使用:
${project.build.directory}/dependency
resources
部分中添加build
元素并通过适当的过滤将其指向${project.build.directory}/dependency
可能更为简单。虽然如果你想要标准src/main/resources
,你也需要把它放在那里。答案 1 :(得分:0)
您可以使用此解决方案:
创建父(构建器)项目,并在其中放置常量,将在资源文件中替换:
<properties>
<some.constant>123</some.constant>
</properties>
将两个项目定义为父项目中的模块:
<modules>
<module>../awesome-project</module>
<module>../awesome-library</module>
</modules>
在my-configuration.xml中将常量引用作为
${some.constant}
在awesome-library.pom配置过滤器处理器中(例如,假设my-configuration.xml放在src / main / resources / META-INF中:
<build>
<resources>
<resource>
<directory>src/main/resources/META-INF</directory>
<targetPath>META-INF</targetPath>
<filtering>true</filtering>
<includes>
<include>**/my-configuration.xml</include>
</includes>
</resource>
在父项目中运行maven clean install
。